char数组指针地址打印
charga[10];chargb[10][10];strcpy(ga,"abc");strcpy(gb[0],"cde");strcpy(gb[1],"edf");pr...
char ga[10];
char gb[10][10];
strcpy(ga, "abc");
strcpy(gb[0], "cde");
strcpy(gb[1], "edf");
printf("[%s]\n", ga);
printf("[%s]\n", &ga);
printf("[%s]\n", ga + 1);
printf("[%s]\n", (&ga) + 1);
printf("\n");
printf("[%s]\n", gb + 1);
printf("[%s]\n", (&gb) + 1);
打印出:
[abc]
[abc]
[bc]
[]
[edf]
[abc]
其中:
1、printf("[%s]\n", (&ga) + 1);打印的是空值,是否因为(&ga)相当于将ga作为二维数组,那(&ga)+1为什么是空值?
2、为什么printf("[%s]\n", (&gb) + 1);打印出的是[abc]呢?
谢谢指点!
那为什么gb后面是ga呢?不是先对ga赋值么?
有人说:ga就是指向ga[]的指针,地址上在加&直接就错了,编译都不能过。
但我可以编译运行啊? 展开
char gb[10][10];
strcpy(ga, "abc");
strcpy(gb[0], "cde");
strcpy(gb[1], "edf");
printf("[%s]\n", ga);
printf("[%s]\n", &ga);
printf("[%s]\n", ga + 1);
printf("[%s]\n", (&ga) + 1);
printf("\n");
printf("[%s]\n", gb + 1);
printf("[%s]\n", (&gb) + 1);
打印出:
[abc]
[abc]
[bc]
[]
[edf]
[abc]
其中:
1、printf("[%s]\n", (&ga) + 1);打印的是空值,是否因为(&ga)相当于将ga作为二维数组,那(&ga)+1为什么是空值?
2、为什么printf("[%s]\n", (&gb) + 1);打印出的是[abc]呢?
谢谢指点!
那为什么gb后面是ga呢?不是先对ga赋值么?
有人说:ga就是指向ga[]的指针,地址上在加&直接就错了,编译都不能过。
但我可以编译运行啊? 展开
2个回答
展开全部
1、printf("[%s]\n", (&ga) + 1);打印的是空值,是否因为(&ga)相当于将ga作为二维数组,那(&ga)+1为什么是空值?
ga相当于字符指针,(&ga)则是指针(地址)的指针, 它不能用%s来打印,应该这样printf("[%x]\n", (&ga) + 1);用%x来打印指针值
2、为什么printf("[%s]\n", (&gb) + 1);打印出的是[abc]呢?
gb的值=&gb, 二维以上数组特有的性质:&gb=gb=*gb。
ga相当于字符指针,(&ga)则是指针(地址)的指针, 它不能用%s来打印,应该这样printf("[%x]\n", (&ga) + 1);用%x来打印指针值
2、为什么printf("[%s]\n", (&gb) + 1);打印出的是[abc]呢?
gb的值=&gb, 二维以上数组特有的性质:&gb=gb=*gb。
展开全部
个人观点:
在内存中gb后面就是ga gb的值比ga小100 (这你自己试一下就知道了)
ga的类型是一维指针
所以&ga的类型二维指针是 char(*)[10] 所以 &ga+1 不是加1而是加10 所以读取的是ga后面的数据所以是空的
gb是二维指针
所以&gb的类型是三位指针char (*)[10][10] 所以&gb+1 内存地址加的是100 就刚好指到gb后面的ga的内容 所以输出地是ga的内容
你可以改成这样 输出就和前面的一样了 (char *)&ga+1 (char (*)[10])&gb+1
在内存中gb后面就是ga gb的值比ga小100 (这你自己试一下就知道了)
ga的类型是一维指针
所以&ga的类型二维指针是 char(*)[10] 所以 &ga+1 不是加1而是加10 所以读取的是ga后面的数据所以是空的
gb是二维指针
所以&gb的类型是三位指针char (*)[10][10] 所以&gb+1 内存地址加的是100 就刚好指到gb后面的ga的内容 所以输出地是ga的内容
你可以改成这样 输出就和前面的一样了 (char *)&ga+1 (char (*)[10])&gb+1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询