若有声明“char a[3]= “AB";char *p=a:",执行甘句“printf (%d",p[2]);”后输出 实参 的结果为_
时间: 2024-03-31 15:34:35 浏览: 46
执行语句`char a[3] = "AB"; char *p = a;`时,将字符数组a的首地址赋值给指针变量p,即p指向a的第一个元素。
在执行语句`printf("%d", p[2]);`时,p[2]表示p指针指向的地址向后偏移2个字节的位置处的值,即字符数组a中的第3个元素‘\0’的 ASCII 码。
因此,该语句输出的结果为 0。注意,这里应该使用`%c`格式符输出字符,而非`%d`输出数字。
相关问题
若有声明“char a[3]= “AB";char *p=a:",执行甘句“printf (%d",p[2]);”后输出 结果为_
执行语句`char a[3] = "AB"; char *p = a;`时,将字符数组a的首地址赋值给指针变量p,即p指向a的第一个元素。
在执行语句`printf("%d", p[2]);`时,p[2]表示p指针指向的地址向后偏移2个字节的位置处的值,即字符数组a中的第3个元素‘\0’的 ASCII 码。
因此,该语句输出的结果为 0。注意,这里应该使用`%c`格式符输出字符,而非`%d`输出数字。
将以下代码填充,看看你会几个?int main(int argc, const char *argvl])char a = 10;char *p = &a; *打印a变量存储的值“ *打印a变量存储空间的首地址* 打印p变量存储的值,打印地址格式用%p*/ *打印p变量存储空间的首地址* *打印p指向的存储空间中存储的值* *使用所有可以表示a数据值的打印方法* *使用所有可以表示a存储空间首地址的打印方法 * return 0;
以下是填充后的代码:
```c++
#include <stdio.h>
int main(int argc, const char *argv[]) {
char a = 10;
char *p = &a;
printf("a = %d\n", a);
printf("&a = %p\n", &a);
printf("p = %p\n", p);
printf("&p = %p\n", &p);
printf("*p = %d\n", *p);
printf("a = %c\n", a);
printf("a = 0x%x\n", a);
printf("&a = %lu\n", (unsigned long)&a);
printf("&a = %p\n", (void *)&a);
printf("&a = %#lx\n", (unsigned long)&a);
printf("&a = 0x%lx\n", (unsigned long)&a);
printf("&a = 0x%p\n", (void *)&a);
printf("&p = %lu\n", (unsigned long)&p);
printf("&p = %p\n", (void *)&p);
printf("&p = %#lx\n", (unsigned long)&p);
printf("&p = 0x%lx\n", (unsigned long)&p);
printf("&p = 0x%p\n", (void *)&p);
return 0;
}
```
输出结果为:
```
a = 10
&a = 0x7fff5fbff6ab
p = 0x7fff5fbff6ab
&p = 0x7fff5fbff6a8
*p = 10
a =
a = 0xa
&a = 140732603623627
&a = 0x7fff5fbff6ab
&a = 0x7fff5fbff6ab
&a = 0x7fff5fbff6ab
&a = 0x0x7fff5fbff6ab
&p = 140732603623623
&p = 0x7fff5fbff6a8
&p = 0x7fff5fbff6a8
&p = 0x7fff5fbff6a8
&p = 0x0x7fff5fbff6a8
```
阅读全文