为您找到"
(15)若在定义语句:int a,b,c,*p=&c;之后,
"相关结果约100,000,000个
B)赋值语句的顺序是自有向左的,1无法赋值给a+b,所以错误 C)相当于j=0;i=j;k=i;正确 第二题:A)强制转化语句应该是类型两侧写括号,正确的写法应为y=(float)i;B)相当于a=3;b=(float)i*a;所以正确 C)p是地址,而i是内容,内容是不能赋值给地址的,正确的写法应为*p=i;...
如下: 最后一个输出语句还省一个结束的英文分号printf("%d\n",c)} 应该;printf("%d\n",c);} main(){ int a=1,b=3,c=5;int *p1=&a, *p2=&b, *p=&c;//这一语句是定义三个指针变量,并赋值 //即:使p1指向a;p2指向b;p指向c p=*p1*(*p2);//该句是给p所指的存储单元c...
A是错误的。A是地址与整型相加,本身就是错误的。参照C选项,正确写法可以写成*(p+i),则i代表地址偏移。B中,先算p-a,即两个地址相减,值为0,则a[p-a]等价于a[0]。C中,根据i的值进行地址偏移,加上*取出地址中的元素。D中,p[i]等价于a[i]。望采纳。
核心在于p的类型。定义等效于 int *p[3];这里p是一个数组,包含三个元素,每个元素类型为int 所以 A p为数组名, 不可以赋值。B p[0]为int*, 而a为二维数组名,等效于int **, 类型不匹配。C a[1][2]为a的一个元素,类型是int,所以&a[1][2]是int*, 和p[0]类型相同, 所以这个...
a可以理解为这个数组的首地址 a[3]是指向第4个元素 所以p指向第4个元素 p[5]是从p后的5个 也就是第9个元素 所以b=9
如题所讲,a代表的是数组的首地址,它的值是不可以更改的,a只能表示数组首地址。所以a++本身就是不允许的。p是一个指针,可以把数组首地址赋值给指针,指针的值是可以改变的,所以p++是没问题的。
正确引用数组元素的 是 *(a+2), 它等同 a[2];(p+5) 错在超界了。如果是 *(p+2) 或 *(p+4) 那么也是对的。 *(p+5) 指向 a[5], 按声明,下标最大到 a[4]。&a[5] -- 也是下标超界 a+2 是 a[0]+2, 不是 引用 1个 数组元素,而是表达式。
选A ,因为*p=a,这时是把数组a的首地址传给了指针p,而数组的定义是从a[0]开始的,所以p+5表示的是元素a[5]的地址,希望你现在明白了
D,数组名即是数组首元素的地址,因此a+2也是一个合法的地址(虽然A,B,C在特殊情况下也是正确的)
p是一个一维数组,没问题吧?他的元素类型是int*,所以他里面存的应该是指针(地址)值,理解?a是一个一维数组,他的元素是int,a就是这个数组的首元素地址,这个肯定记得吧。那么把a(类型是int*)赋给p中元素p【0】当然是没问题的了