1、(p1++)的意思是取p1地址中的值,然后p1自增1(因为++在p1的右面),即指针向后移动一位,指向下个元素。所以第一遍运行s=*p1++;后,s的值为1,p1指向第二个位置(2)。以此类推。
专注于为中小企业提供做网站、网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业市中免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了1000+企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
2、编程中要注意的问题是:如果scanf()后还是scanf(),第一个scanf()留下的空白符不会影响到下一个scanf()得到有效数据。
3、int *p;只有地址,没有内存空间,这程序一般会崩溃。
您的这个程序,主函数中的第一句话表示p1 和str都是数组名,指向数组中的第一个元素。p2是指针变量,指向的是字符型数据。第二句话表示p2这个指针变量指向的是包含有abc等三个元素的字符型数组。
答案是D 在循环开始,ptr指向了数组的首地址,经过一次循环,指针指向了下一个字节。第一次循环 ptr指向该数组第一个字节,通过printf函数,输出了指针所指的字符串“ABCDE”一次循环,每次指针后移一个字节。
1. 若有说明:int a=2, *p=&a, *q=p;,则以下非法的赋值语句是(D)。A. p=q; B. *p=*q; C. a=*q; D. q=a;a是整型数,int *p,*q定义了指针,p,q是指向整型的指针。
第二个问题更简单了。a[i][j] 是二维数组,相当于a是一个指向指针的指针,或者说a[i]是一个数组,这个数组的每个元素又是一个一维数组。
首先声明一个整型数组a,整形变量y,整型指针p。p指向数组a[]的第1个元素,也就是8。接下来,指针p先--,指向了数组a[]的第0个元素,也就是5。之后y取出p指向的内容,即5。
建议换地方做题~第二题那么明显的大小为10的数组下标最多为9这种题目都答案给错,可见出题者的水平,第一题无论怎样都不可能离开C和D 答案居然为B太侮辱智商。
答案是D 在循环开始,ptr指向了数组的首地址,经过一次循环,指针指向了下一个字节。第一次循环 ptr指向该数组第一个字节,通过printf函数,输出了指针所指的字符串“ABCDE”一次循环,每次指针后移一个字节。