|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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;
-
- }
复制代码
|
|