马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 我爱橙 于 2022-6-10 15:51 编辑
Q:若有定义int a[5],*p=a;
则对a数组元素地址的正确引用是
A.&a[5]
B.p+2
C.a++
D.&a
运行了程序B和D结果一样,
但答案是B,
为什么不是D直接取地址啊?
A.#include <stdio.h>
#include <math.h>
int main()
{
int a[5],*p=a;
&a;
printf("a=%d\n",a); //a=6487552
printf("&a=%d\n",&a); //&a=6487552
printf("a[5]=%d\n",a[5]); //a[5]=0
printf("&a[5]=%d\n",&a[5]); //&a[5]=6487572
printf("*p=%d\n",*p); //*p=0
printf("p=%d\n",p); //p=6487552
printf("a[0]=%d\n",a[0]); //a[0]=0
printf("&a[0]=%d\n",&a[0]); //&a[0]=6487552
return 0;
}
B.为什么p+2语句没有执行啊?#include <stdio.h>
#include <math.h>
int main()
{
int a[5],*p=a;
printf("a=%d\n",a); //a=6487552
printf("&a=%d\n",&a); //&a=6487552
printf("a[5]=%d\n",a[5]); //a[5]=0
printf("&a[5]=%d\n",&a[5]); //&a[5]=6487572
printf("a[0]=%d\n",a[0]); //a[0]=0
printf("&a[0]=%d\n",&a[0]); //&a[0]=6487552
printf("p=%d\n",p); //p=6487552
printf("*p=%d\n",*p); //*p=0
p+2;
printf("a=%d\n",a); //a=6487552
printf("&a=%d\n",&a); //&a=6487552
printf("a[5]=%d\n",a[5]); //a[5]=0
printf("&a[5]=%d\n",&a[5]); //&a[5]=6487572
printf("a[0]=%d\n",a[0]); //a[0]=0
printf("&a[0]=%d\n",&a[0]); //&a[0]=6487552
printf("p=%d\n",p); //p=6487552
printf("*p=%d\n",*p); //*p=0
return 0;
}
C.怎么实现a++?#include <stdio.h>
#include <math.h>
int main()
{
int a[5],*p=a;
a++;
printf("a[5]=d\n",a[5]);//
printf("*p=%d\n",*p);//
printf("p=%d\n",p);//
printf("a[0]=%d\n",a[0]);//
return 0;
}
7 8 a++;
[Error] lvalue required as increment operand
D.#include <stdio.h>
#include <math.h>
int main()
{
int a[5],*p=a;
&a;
printf("a=%d\n",a); //a=6487552
printf("&a=%d\n",&a); //&a=6487552
printf("a[5]=%d\n",a[5]); //a[5]=0
printf("&a[5]=%d\n",&a[5]); //&a[5]=6487572
printf("a[0]=%d\n",a[0]); //a[0]=0
printf("&a[0]=%d\n",&a[0]); //&a[0]=6487552
printf("p=%d\n",p); //p=6487552
printf("*p=%d\n",*p); //*p=0
return 0;
}
|