关于一个c语言的问题?

来源:百度知道 编辑:UC知道 时间:2024/06/30 16:40:45
假设a是一个已定义的字符串,p是指向a的指针。
为什么char *p=a;可以通过编译器编译
而char *p;*p=a;确不可以通过编译器编译呢??
对于char *p=a应该怎么理解??

char *p=a;
这一句应该理解为
char* p;
在这里,p是一个指针,a也是一个指针,能相互赋值
但 *p 表示 p 这个指针指向的值,他是一个 char 型的
不能把指针赋值给 char 型变量
所以 *p=a;是错误的

应该是 char *p=&a 吧

char *p=&a
这里的指针是指的a的内存地址,所以a前面要加个取地址符
而*p是指的是这个内存地址的具体值

main()
{
char a[]="aa";
char *b;b=a;
printf("%s",b);
}

通过编译
main()
{
char a[]="aa";
char *b=a;
printf("%s",b);
}
通过编译
main()
{
char *a="aa";
char *b;b=a;
printf("%s",b);
}
通过编译

main()
{
char *a="aa";
char *b=a;
printf("%s",b);
}
通过编译

对于char *p=a应该怎么理解?
定义一个指针p, p指向的地址和a指向的地址相同

char a='a';
char *p=a; //这句不行的吧,类型对不上,cannot convert from 'char' to 'char *'

char a='a';
char *p;
*p=a;//这样才可以

四楼的回答正确