-
关于指针常量和常量指针: * (指针)和 const(常量)谁在前先读谁 ;*象征着地址,const象征着内容;谁在前面谁就不允许改变。 例: int const *p1 = &b; //const 在前,定义为常量指针 int *const p2 = &c; //*在前,定义为指针常量 常量指针p1:指向的地址可以变,但内容不可以重新赋值,内容的改变只能通过修改地址指向后变换。 p1 = &a是正确的,但 *p1 = a是错误的。 指针常量p2:指向的地址不可以重新赋值,但内容可以改变,必须初始化,地址跟随一生。 p2= &a是错误的,而*p2 = a 是正确的。 来源:http://blog.csdn.net/beyond0525/article/details/7409305 个人补充: 1 关于常量指针: 一旦声明常量指针后,就只能修改其地址,无法直接通过指针来修改被指向的变量的值,即若 const *p = &x; *p = 2; //错误,无法直接将 2 赋值给一个常量; *p = &y; // 正确,可以改变常量指针的地址; x = 2; //正确,可以修改被指向的变量的值; 2 关于指针常量: 一旦声明指针常量后,该指针所指向的地址就无法改变,可以修改其指向的内容。即若 *const p = &x; p = &y;//错误,该指针为常量,其指向的地址已经固定,无法修改; *p = 2;//正确,该操作没有修改 p 指向的地址,而是修改了被指向的内容; 3 一句话总结 常量指针:其指向的内容被视为一个“常量”,因此无法直接通过指针来修改内容; 指针常量:其指向的地址被视为一个“常量”,因此无法直接修改指针所指向的地址。查看全部
-
因为内存一旦出现重复回收计算机就会出现异常查看全部
-
归还内存后要将指针赋值为空查看全部
-
C和C++内存的使用方式查看全部
-
int x = 3; //定义引用,y是x的引用 int &y=x; //打印x和y的值 cout<<x<<","<<y<<endl; //修改y的值 y = 6; //再次打印x和y的值 cout<<x<<","<<y<<endl; return 0; 搞不懂为什么会提示出错?查看全部
-
函数声明: 类型 函数名 (...) ; 函数定义: 类型 函数名 (...) {……}查看全部
-
当数组作为形参时 比如数组名是arr 参数列表里为什么是int *arr 这个* 的作用是什么,int *arr是不是和int arr[]等价? 在参数列表中作为参数用时,在这里他们效果是一样的,都是相当于指针。 注:数组可以看作是常量指针,在声明时便分配内存,数组名就是指向数组第0个元素的指针,不过指向的地址不可变,这样说能明白?在参数列表中作为参数用时,数组名代表数组元素的首地址,并不代表数组中的全部元素。因此用数组名作函数实参时,不是把实参数组元素的值传递给形参,而只是将实参数组的首地址传递给形参,形参可以是数组名,也可以是指针变量,他们用来接收实参传来的地址,这样,实参数组和形参数组就共占同一段内存单元。因此改变形参数组元素的值将同时改变实参数组的值,这样做排序时,将要排序的数组传递到函数中,主调函数中的数组也已经排好序了。查看全部
-
内存管理查看全部
-
块内存的申请与释放查看全部
-
说一个比较好记的方法来区分 int const *p与 int* const p,把*读作pointer to然后从后往前读. 第一个int const *p就可以读作 p is a pointer to const int,p是指向常量的指针 第二个int* const p就可以读作 p is a const pointer to int,p是指向int型的常指针查看全部
-
使用内联函数可以节省时间。查看全部
-
不能用一个指针变量来指向一个const修饰的变量,可以用const int *p=&a;查看全部
-
申请与释放内存需要配套使用。 申请需要判断是否成功,释放需要设空指针。查看全部
-
申请内存(new)并归还内存(delete)后,需要讲指针指向空(p=NULL)查看全部
-
权限小(只可读)的地址接受一个权限大(可读写)的变量是允许的。 权限大的地址接受一个权限小的变量是不允许的(存在可通过地址改变变量的风险,这种情况计算机不予以通过)查看全部
举报
0/150
提交
取消