C 为什么使用';%取消对字符指针的引用会导致程序崩溃s';?
我正在学习c,一个初学者,谁能让我明白我缺少的是哪个概念? 先谢谢你C 为什么使用';%取消对字符指针的引用会导致程序崩溃s';?,c,string,pointers,C,String,Pointers,我正在学习c,一个初学者,谁能让我明白我缺少的是哪个概念? 先谢谢你 #include<stdio.h> int main() { char s[10]; s[0]='A'; s[1]='B'; s[2]='\0'; char *p; int i; p=s; printf("%c\n", *p); //It's ok. printf("%s", *p); // or *s...what's wrong
#include<stdio.h>
int main()
{
char s[10];
s[0]='A';
s[1]='B';
s[2]='\0';
char *p;
int i;
p=s;
printf("%c\n", *p); //It's ok.
printf("%s", *p); // or *s...what's wrong here,why does program crash?
return 0;
}
#包括
int main()
{
chars[10];
s[0]='A';
s[1]='B';
s[2]='\0';
char*p;
int i;
p=s;
printf(“%c\n”,*p);//没问题。
printf(“%s”,*p);//或*s…这里怎么了,为什么程序会崩溃?
返回0;
}
更改
printf("%s", *p);
到
原因是%s
需要一个指针,*p
是p
处的解引用值,也称为p[0]
处的字符值
如果这不合理,请描述printf(“%c\n”,*p)
工作的原因*p
与p[0]
相同,这与s[0]
相同,因为p
指向s
。因为s[0]
是一个char
,%c
在这里工作,因为它需要一个char
。但是另一方面,%s
期望char*
改变
printf("%s", *p);
到
原因是%s
需要一个指针,*p
是p
处的解引用值,也称为p[0]
处的字符值
如果这不合理,请描述
printf(“%c\n”,*p)
工作的原因*p
与p[0]
相同,这与s[0]
相同,因为p
指向s
。因为s[0]
是一个char
,%c
在这里工作,因为它需要一个char
。但是另一方面,%s
期望char*
您想要printf(“%s”,p)
。不要取消对指针的引用。您需要printf(“%s”,p)
。不要取消引用指针。因为它需要的是指针,而不是取消引用的值。%s
需要的是字符*
,而不是字符。
。打开所有编译器警告。一个好的编译器应该警告过char*p。。。printf(“%s”,*p)代码>。因为它需要的是指针而不是取消引用的值。%s
需要的是char*
,而不是char
。请打开所有编译器警告。一个好的编译器应该警告过char*p。。。printf(“%s”,*p)代码>。谢谢,我现在明白了,因为'%s'需要字符*@没问题,如果你觉得答案有帮助,那么别忘了投票或接受答案。祝你好运!这是我的第一个问题。很快就解决了。太酷了!:)@Sumon可以更快地解决您的问题,启用所有编译器警告。@Chris您上次编辑的内容正是我真正要搜索的内容,作为一名新手,向我提供完美的解释,再次感谢!谢谢,我现在明白了,因为'%s'需要字符*@没问题,如果你觉得答案有帮助,那么别忘了投票或接受答案。祝你好运!这是我的第一个问题。很快就解决了。太酷了!:)@Sumon可以更快地解决您的问题,启用所有编译器警告。@Chris您上次编辑的内容正是我真正要搜索的内容,作为一名新手,向我提供完美的解释,再次感谢!