char*a;a="abcd";
int b=5,*a=&b;
cout<<a<<endl;
"abcd"是一个字符串,在内存中肯定有自己的地址空间,char *a = "abcd"就是把这个地址空间赋给a保存的。"abcd"本身就是一个地址,因为在c语言中字符串就是对应于一个指针。int b=5; *a = &b的这个,&b得到的是一个int*,是一个int型的指针,然后还要赋值给*a的话,可以知道a的类型是int**,就是指向指针的指针,无论如何,也是指针。所以输出的是地址值。a作为char*的时候,送给cout的时候实际上是cout按字符串输出,你也可以看到a实际的地址指针值如
"abcd"是一个字符串,在内存中肯定有自己的地址空间,char *a = "abcd"就是把这个地址空间赋给a保存的。"abcd"本身就是一个地址,因为在c语言中字符串就是对应于一个指针。
int b=5; *a = &b的这个,&b得到的是一个int*,是一个int型的指针,然后还要赋值给*a的话,可以知道a的类型是int**,就是指向指针的指针,无论如何,也是指针。所以输出的是地址值。a作为char*的时候,送给cout的时候实际上是cout按字符串输出,你也可以看到a实际的地址指针值如
char *a="123";cout<<a<<endl;输出的是a里面的字符串内容而不是a的地址,原因是C++的<<符号的功能,聪明的把字符串指针当成字符串内容输出。如果想打出a的地址,要强转字符串为void*的指针再输出,这样出来的是地址,本身他们就是一个地址