新手对于C++语言中 指针与地址的概念性问题。

2025-01-02 06:02:52
推荐回答(3个)
回答1:

这个,你就要明白cout的工作机制了。
首先cout<这里p是存有‘w’的内存地址,这是毫无疑问的,但是cout<char * a = "w";
cout<这里是不是打印出来的是w,而不是地址。想明白了吗?由于p=&a 所以p是c类型的字符串的首地址,按照cout的工作机制,应该打印一串字符串,直到遇到‘\0’为止,而你这个程序没有\0所以w以后的就是乱码

然后是cout<<&p<看了上面的解释,是不是这个就好理解了,&p指的是p指针所在内存的地址,不是指'w'所在的内存地址,默认是void *型,所以打印的就是地址。

你可以把cout<

回答2:

p是指针变量,执行p = &a后 p 里面装的是a的地址,而&p才是p的地址;cout << p << endl;输出p指向的地方开始起的一个字符串,直到遇到'\0',但是a后面的空间不是'\0'所以你看到的是w+一堆乱码,cout << *p << endl才是输出w

p里放的是a的地址,而a里放的是w

回答3:

char a='w'; //a是变量,用于存放一个字符常量
char *p=NULL; //p是指针变量,用于存放指针的变量,并初始化为空指针
p=&a; //p指向变量a,存放的是a的地址,利用p可以间接访问a的值,*p,&为取地址符,*为间接运算符
cout< cout<<&p< cout<<*p<内存地址就是存储单元的编号,变量名就是给了内存单元一个非数字标识符,便于程序员编程
p也是一个变量,只不过它存放的值是另一个变量(或其他对象)的地址