第一题
下列代码的运行结果是
int a[]={1,2,3,4};
int *b=a;
*b+=2;
*(b+2)=2;
b++;
printf(“%d,%d\n”,*b,*(b+2));
请选择
- 1,3
- 1,2
- 2,4
- 3,2
思路
*b+=2 ====> *b = *b + 2 ====>{3,2,3,4}
*(b+2)=2; ====> {3,2,2,4}
b++ ====>指针指向index[1]
所以,选C。
第二题
下列代码的运行结果是
void test7() {
int a[4] = { 1, 2, 3, 4 };
int* ptr = (int*)(&a + 1);
printf("%d\n", *(ptr - 1));
}
请选择
- 1
- 2
- 3
- 4
思路
打印一下
void test7() {
int a[4] = { 1, 2, 3, 4 };
printf("a = %p\n\n", a);
int* ptr = (int*)(&a + 1);
printf("ptr = %p\n", ptr);
printf("ptr+1 = %p\n", ptr+1);
printf("ptr+2 = %p\n\n", ptr+2);
printf("*(ptr - 1) = %d\n", *(ptr - 1));
printf("*(ptr - 2) = %d\n", *(ptr - 2));
}
输出
a = 00BAF800
ptr = 00BAF810
ptr+1 = 00BAF814
ptr+2 = 00BAF818
*(ptr - 1) = 4
*(ptr - 2) = 3
可以看出来,类型不同,指针加的字节数也不同。选D。