请问这个c++简单问题。急
来源:百度知道 编辑:UC知道 时间:2024/06/14 15:20:05
VC++6中,
char * name="kite";
cout<< &name << name ;
输出是 0012FF7C 与 kite
请问:在cout输出时,为什么&name(而不是name)表示字符串name的地址?我记得name也是地址啊。
一楼和二楼的回答不得要领
char * name="kite";
cout<< &name << name ;
输出是 0012FF7C 与 kite
请问:在cout输出时,为什么&name(而不是name)表示字符串name的地址?我记得name也是地址啊。
一楼和二楼的回答不得要领
楼主说说我的理解,希对你有所帮助。
做个实验。
#include<stdio.h>
#include<iostream.h>
main()
{
char *string="abcd";
printf("%d\n",string);
printf("%s",string);
}
看到了吗,用%d输出你就得到了地址;而你用%s输出你就得到了字符串。
这是因为不同的格式对应不同的输出方式而已。所以你不必深究了,记住就行了。%s比较特殊,它是表示输出它指向的一个字符数据,然后自动使string加1,知道遇到'\0'为止。
所以最后能得出结论。C++中cout输出字符指针的格式默认是按%s来输出的。
明白了吗?
char * 特殊。
int a[] = {1,2,3};
cout << a << endl;
输出a的地址。
char *s = "abcd";
cout << s << endl;
输出s的内容 “abcd".
char *s = "abcd";
cout << *s << endl;
输出s的第一个字母,a.
程序就是输出字符串name的地址和值。
&name 输出地址,name输出值。
&这个是取地址符啊;
这样说该简单了;
name等价于*name(因为你定义char *name)那么name就是*name的别名(可以这么理解)
而*name就是name所指地址中的值。&取的是name[0]的地址;
*name 这个指针在直接赋值的时候,char类型是占1个字节的 ,*name="kite",是开辟了一个地址,首地址储存的是字符'