最赞回答 / 稚嫩的魔法师
const 固定的是*p,指针p指向的变量x内存空间存放的值不能通过(*p)赋值某个数来改变,但是指针p本身是不受限制的,可以将变量y的地址赋值给p;将y的地址赋值给p后,也无法通过对(*p)的赋值操作来改变y的值.
2016-06-16
已采纳回答 / 天涯落葉
输出p的地址 可以用 cout<<&p<<endl;C++当然也可以格式,比如cout << hex <<100; 可以输出100的十六进制可以百度一下c++输出格式,有详细的
2016-06-11
最赞回答 / qq_钱剑强_0
尽管楼主的代码可以得到正确输出,但实际上发生了‘缓冲溢出’的错误。之所以楼主得到正确输出应该是视频作者提供的编译器存在Bug没有报错导致的。排名第一的答案在VS2015中编译也会报错。 错误的根源在于strcpy函数。strcmp函数在运行时的过程如下:首先生成一个缓冲区buffer,缓冲区没有限制大小可以接收任意长的字符串(本例为"Hello imooc")。然互缓冲区中的字符串拷贝到str,str在内存中指向char型数组(大小为6字节),也就是说"Hello imooc"拷贝到了cha...
2016-06-06
最赞回答 / 任小青
老师有说,引用分四种:基本数据类型的引用、结构体类型的引用、指针类型的引用、引用作为函数参数1、这道题目肯定是基本数据类型的引用咯,就直接 int &b = a;2、你说的 int *&b = a 是当a是个指针*a才使用的望采纳
2016-05-25
已采纳回答 / qq_言懿_03305352
int *p = NULL; 定义一个指针变量p,其指向的内存里面保存的是int 类型的数据;在定义变量p 的同时把p 的值设置为0×00000000,而不是把*p 的值设置为0×00000000。这个过程叫做初始化,是在编译的时候进行的。 int *p; *p = NULL; 第一行代码,定义了一个指针变量p,其指向的内存里面保存的是int 类型的数据;但是这时候变量p 本身的值是多少不得而知,也就是说现在变量p 保存的有可能是一个非法的地址。第二行代码,给*p 赋值为NULL,即给p指向的内存赋值为N...
2016-05-16