问一个关于使用指针外得字符串的问
在你的程序中:
“char *string="I love China!";”这句话与“char string[]="I love China!";”是等价的。
——都是创建一个字符串,其名称为string,内容是“I love China!”
所以,如果你想输出I love China里的任意一个字符,只需标明该字符在字符串这个数组中的位置即可。 如下面的程序是输出单词“love”中的“e”。(“e”在这句话中是第6个字符)
main()
{char *string="I love China!";
printf("%c\n",string[5]);
}
我觉得,你有两个方面的概念不清...全部
在你的程序中:
“char *string="I love China!";”这句话与“char string[]="I love China!";”是等价的。
——都是创建一个字符串,其名称为string,内容是“I love China!”
所以,如果你想输出I love China里的任意一个字符,只需标明该字符在字符串这个数组中的位置即可。
如下面的程序是输出单词“love”中的“e”。(“e”在这句话中是第6个字符)
main()
{char *string="I love China!";
printf("%c\n",string[5]);
}
我觉得,你有两个方面的概念不清:
1,对于指针的赋值。
只能是是把变量的地址赋值给指针。如下:
int i;
int *k=&i;
而不能把一个常数赋值给指针,如下是错误的。
int *k="3";
你的问题中“char *string="I love China!";”。
如果你是企图定义一个指针变量,那么你则试图把把常量“I love China”赋值给指针变量 string。
——这是错误的。
于是,我们对你的程序进行如下改写:
main()
{char string[]="I love China!";
char *p=&string;
printf("%s\n",*p);}
(——改写后第一个错误解决了,但第二个错误就暴露出来了。
下面马上就说)
2,
经过,我们改写后。我们首先创建了一个字符串,然后把字符串的地址给指针变量p。
——这里就出现了一个错误。
在C语言中,字符串的本质是一个数组。字符串名就是数组名,而数组名本身就是指向这个数组的一个指针变量。
所以,上面“char *p=&string”中的“&”是不需要的,
应改为“char *p=string”
当然,在输出是的格式说明符“%s”,对应的字符串名,也就是一个指向字符数组的一个指针。
所以,“printf("%s\n",*p);”的“*”也是不需要的。
最后程序改为:
main()
{char string[]="I love China!";
char *p=string;
printf("%s\n",p);}
。
收起