请教一个很简单的C语言疑问,谢谢

来源:百度知道 编辑:UC知道 时间:2024/05/16 17:45:09
#include "stdio.h"
void main()
{char *string="i love china!";
printf("%s\n",string);

}
疑问:

这个程序中printf("%s\n",string),不是应该把string改为*string的么?("%s\n",*string)才是输出字符,而printf("%s\n",string)输出地址么?

*是取值运算符
("%s\n",string) string本身就是一个指针。
char *string="i love china!";

如果加了*
*string就是取string指向的第一个(char)也就是i.
要用%c。

*string 是输出第一个字符

C++规定cout<<(字符地址) 的时候 输出字符串本身
----------------------------------------------
char a='d';
cout<<&a;输出的却是字符串,直到遇到\0结束
cout<<a;就是直接输出该字符'd'了;
-----------------------------------------------------------
char *a="dsadaadsad";
cout<<a; 这里输出的是首地址,根据前面所讲的C++规定,输出的是原字符串(直到遇到'\0'结束) 所以输出就是dsadaadsad

你这里的char *string是将string定义为一个指针变量,指向字符型数据,它并不是把字符串“i love china”这些字符存放到string,而是把“i love china”的第一个字符即“i”的地址赋值给string,而程序在运行的时候,他会根据第一个字符的地址从而读出后面的字符,实际上只是从地址中调出字符然后输出,注意:这里的*只是定义一个指针,而string即是所定义的指针,并不是定义一个字符串“*string”,在说定义一个字符串有专门的格式。等你学过指针的概念应该就会明白了,你可以参考c《程序设计》,谭浩强第三版,字符串与指针这一节,上面有详细的介绍哦。

printf这一库函数的参数类型为指针,而string是一个指针类型,*string是一个char类型