C语言一个字符串指针问题
#include"stdio.h"main(){char*chp="ABCD";for(;*chp!='\0';chp=chp+2)printf("%s",chp);pr...
#include "stdio.h"
main()
{
char *chp="ABCD";
for( ; *chp!='\0'; chp=chp+2)
printf("%s", chp);
printf("\n"); }
这个代码中,运行结果个字符串而不是地址。
那为什么第一个printf中要写chp而不是*chp? 展开
main()
{
char *chp="ABCD";
for( ; *chp!='\0'; chp=chp+2)
printf("%s", chp);
printf("\n"); }
这个代码中,运行结果个字符串而不是地址。
那为什么第一个printf中要写chp而不是*chp? 展开
展开全部
*chp 代表的是一个字符
chp表示的是一个地址
printf("%s", chp); 中的%s要求参数是地址,而不是一个字符!
如果换成:%c 就可以用*chp了,如:
printf("%c", *chp); 这样只输出当前位置的一个字符
chp表示的是一个地址
printf("%s", chp); 中的%s要求参数是地址,而不是一个字符!
如果换成:%c 就可以用*chp了,如:
printf("%c", *chp); 这样只输出当前位置的一个字符
追问
%s为什么要求参数是地址?我看教材好像也没说过呀...
再说,如果要求是个地址,那输出结果也不应该是字符串呀
追答
呵呵,%s要求参数是地址,这个可以从printf函数的文档上看到,你可以从网外查一下。
%s要求参数是地址,但输出的内容是地址中的数据,即字符串。
如果想输出地址值,可使用%p来输出,你可以试一下,如:
printf("%p", chp);
详细情况你可以从网上查一下这个函数的使用说明。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
*chp (这是一个字符型的指针,它指向的是“ABCD”这个字符串的首地址,不是这个字符串的地址)你如果要用printf();就要写成printf(“%p”,*chp)。。。要是printf(“%s”,*chp),就错了。。
chp (这是一个地址,“ABCD”的首地址),,
这很类似于
char chp[ ]=“abcd”;
输出;;;puts(chp);//或者printf(“%s”,chp);
就这些了,为什么不是*chp,,因为它是一个“指针(*chp)”,它指向“一个地址(chp)”;;;;;
chp (这是一个地址,“ABCD”的首地址),,
这很类似于
char chp[ ]=“abcd”;
输出;;;puts(chp);//或者printf(“%s”,chp);
就这些了,为什么不是*chp,,因为它是一个“指针(*chp)”,它指向“一个地址(chp)”;;;;;
追问
chp是输出地址,而结果是“ABCD”,那就是说字符串的地址就是字符串本身?
追答
这种说法不能说对,但是这样理解是可以的,因为起到了相同的效果,,
举个例子::
;-------------------------------------------------------------------------------
main(){printf(&0["12345%s\n"],"what"+1);}
;-------------------------------------------------------------------------------
输出应该是===:
12345hat
please any key .........
;-----------------------------------------------------------------------------
这个里面,“what”+1,就是字符串“what”的地址向后再移动1,所以就是“hat”(具体的地址要根据编译器而定!);;;所以你可以用你的思路理解;;;
继续努力………………
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
printf("%s", chp); 是 显示 字符串
printf("%c", *chp); 是显示 一个 字符
printf("%c", *chp); 是显示 一个 字符
追问
我好像明白了,是不是因为这里的指针变量chp没存放任何地址,只是当做普通变量存放“ABCD”这个字符串?
追答
不是啊,
printf("%s", chp); 是 显示 字符串, 主要 是 %s ,s 就是 字符串,显示 字符串的 时候 要用字符串的起始地址,计算机直到 碰到 字符串结束标志 才停止
printf("%c", *chp); 是显示 一个 字符, 主要 是 %c ,c就是 字符 ,输出字符的 时候 直接 用变量名
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询