int a[2]={1,3},*p=&a[0]+1 首先执行&a[0]+1,既把a[0]的地址加一个sizeof(int)个字节,也就是a[1]所以*p=a[1]=3
p的值是3。第一条输出语句:printf("%s*p=&a[0]+1 相当于 int *p; p=a+1; 所以答案*p=a[1]=3。&a[0] 就是a数组的首地址 即相当于a 。 a+1就相当于指针下移一个单位。inta[2]={1,3}即a[0]=1,a[1]=3。p=&a[0]+1 这是一个指针变量,*p=&a[0]+1就是a[0]的地...
p=&a[0]+1=a[1];p指向地址的值为3 第二个编译就通不过,因为++时程序员要求改变地址,这显然不可能。int a[2]={1,3},*p;p=&a[0];p++;这才合法。
9、设变量定义为“int a[4];”,则表达式___不符合C语言语法。D A、*a B、a[0] C、a D、a++ 10、设变量定义为“int x, *p=&x;”,则&*p相当于___。 A A、p B、*p C、x D、*&x 11、有如下程序 int runc(int a,int b){ return(a+b);} main0 { ...
(*p)[2]=a表示将p定义为一个指向含2个元素的一维数组的指针变量,那么二维数组就可以看作是一维数组a[3],其中每一个元素都是一个一维数组,a[1]={1,2},a[2]={3,4},a[3]={5,6};则p+2就指向了a[3],*(p+2)是a[3]的首地址,**(p+2)就是a[3]的首元素,即为5。
因为*p是指针。当x的地址赋值个指针p的时候,他们的地址就一样(数值也是一样)。指针的话,要表示数值的话用用*p,指地址的话,只要p就可以。如果加地址符号&,那就值该指针的地址(&*p),也就是值x的地址。ABCD中,只有A选项表p的地址(即是x的地址)。B、C和D都是表值。希望能帮助你!
2],a[2][3]a[0]代表第一行,a[1]代表第二行...a[1][1] 代表第二行第二列的值,a[2][1]代表第三行第二列的值 从你定义数组的语句中可以看到是一个三行四列的数组,所以问的a[1][1]和a[2][1]均没有越界。第一个大括号里面代表的是第一个一维数组,第一行的值,0,0 ...
g=p有问题。g是字符型指针,p是整型指针。不能这样赋值
D) 3*pow(n,x)/(2*x-1)(19) 设有定义:long x=-123456L;,则以下能够正确输出变量x值的语句是( )。A)printf(“x=%d\n”,x); B) printf(“x=%1d\n”,x);C)printf(“x=%8dL\n”,x); D)printf(“x=%LD\n”,x);(20) 若有以下程序:main(){ int k=2,i=2,m;m=(k+=i*=k)...
如果这个代码int a[3][4]={{1},{2},{3}};是在所有函数之外,即数组a为全局变量,则a[1][1]=a[2][1]=0。如果是在某个函数的内部定义的,即为局部变量,则a[1][1],a[2][1],没有赋初值,也就没有值。 bostart | 发布于2011-07-07 举报| 评论 2 0 设定义了说明语句:static int a[...