字符串指针问题

来源:百度知道 编辑:UC知道 时间:2024/05/28 17:20:42
char *p,str[]="H,W\n";
p=str;
p=++;
执行以上语句后printf(p);输出是:( )
A. H,W\n B. H,W C. W D. ,W

请详细说明为什么,我感觉选B,但答案不是
打错了,第三行是p++
现在不明白的就是这个p++,执行后,为什么是指向下一个而不是当前p所指向?
问题二:
char a[10];scanf("%s",a);puts(a)
当输入为"abcfghi"时,输出为( )
答案是:abc,不知对错

题目不全,p=++?

如果是p=++p;或者p=p++;的话,
输出应该是D

因为,p=str;赋值后,p指向"H,W\n"的首地址,也就是'H'的地址,
然后p++执行后,由于p是指针,所以也就是将p指向他的下一个地址,
也就是','

所以printf(p);输出是,W

应该选D,还有疑问么?

因为p本来指向str的,而str又是"H,W\n";
如果p没有自加,那么就选B

由于p++过,所以,把H给略过去了,p指向到",W\n";了

问题二:
char a[10];scanf("%s",a);puts(a)
当输入为"abcfghi"时,输出为( )
答案是:abc,不知对错

输出当然应该是:abcfghi
答案abc,肯定给错了

当然应该是D了
关键在于p++,因为执行以后现在p就指向了str[]中的第二个元素地址,也就是“,”这个字符,而“\n”是转义字符,“\n”即为回车

呵呵,楼主没有弄懂指针的含义。
由于通过地址能找到所需的变量单元,即地址“指向”变量单元,一个变量的地址就称为该变量的指针。专门用来存放变量地址的变量称为“指针变量”。指针变量的值是指针,即地址。人们常把一个指针变量说成是一个指针,但是“指针”和“指针变量”实际上是不同的两个概念。可以说变量a的指针是2000,而不能说a的指针变量是2000。
指针就是地址,变量的指针就是变量的地址,指向地址的变量就是指针变量。
在你的问题中,变量p就是指向地址的变量,当p++时,就是指p所指向的地址向后移动一位

当然还是abcdefghi了,劝楼主去看一下C语言的基础性教材吧
scanf()函数格式字符中的%s,指的是读入一个字符串!!,输入时以非空字符开始到第一