1. 针对以下代码,
const char str1[]=”abc”;
const char str2[]=”abc”;
const char *p1 = “abc”;
const char *p2 = “abc”;
判断下列说法哪个是正确的(注意是地址):_ E_。
A. str1和str2地址不同,P1和P2地址相同。
B. str1和str2地址相同,P1和P2地址相同。
C. str1和str2地址不同,P1和P2地址不同。
D. str1和str2地址相同,P1和P2地址不同。
E. 4个地址都不相同
2. 在gcc编译器下,针对下列代码:
const char str1[] = "abc";
const char str2[] = "abc";
const char *p1 = "abc";
const char *p2 = "abc;
那么针对printf("%d %d %d %d\n",str1,str2,p1,p2)的结果,判断下列说法哪个正确?(A)
A. str1和str2地址不同,P1和P2地址相同。
B. str1和str2地址相同,P1和P2地址相同。
C. str1和str2地址不同,P1和P2地址不同。
D. str1和str2地址相同,P1和P2地址不同。
E. 4个地址都不相同
3. 在VC++6.0输入一下代码
#include <stdio.h>
int main()
{
const char str1[] = "abc";
const char str2[] = "abc";
const char *p1 = "abc";
const char *p2 = "abc";
printf("%d %d %d %d\n",&str1,&str2,&p1,&p2);
printf("\n");
printf("%d %d %d %d\n",str1,str2,p1,p2);
}
编译器输出结果是:
两道题的差别在于第一个是指针的地址,第二道题是变量存储的地址,即指针指向的地址。