以下程序运行后,输出结果是
A) cde B) 字符c的ASCII码值 C) 字符c的地址 D) 出错
main() { char *s="abcde"; s+=2; printf("%ld\n",s); }
%ld 是用于打印 long int 类型的,而 s 是一个 char * 类型的指针。在大多数现代编译器和平台上,指针的大小与 long int 或 long long int(取决于平台)相同,但使用错误的格式说明符可能会导致未定义行为或警告/错误消息(取决于编译器)。
选择答案C,输出的为字符c的地址。
因为%d是打印整形变量的值,因为前一句执行了s+=2,s指针偏移了两个位置,偏移了两个位置之后s指向的是字符c,所以输出语句输出的是指针s,而s存放的是地址,所以输出的就是字符c所在的地址。
printf("%d\n",*s);} 就是字符c的ASCII码值 printf("%s\n",s);} 就是cde printf("%s\n",*s);} 就是段错误 D、出错
【答案】C
【解析】char...
用户登录可进行刷题及查看答案
【解析】char *s ="abcde",声明s是一个字符串指针,并且将字符数组"abcde"的首地址赋值给了s,s+=2,即是在原来的s地址上向前推进两个字节,又因为数组是在连续空间上存储的一组数据,且一个字符占一个字节,那么也就等价于由数组的第一个字节地址推进到第三个字符的地址,即字符c的地址。答案为c
登录后提交答案