C++指针

int *p1,p2;

p1是int型的指针,p2是一个int型变量。

*是声明符。

int a;

int* p;

p = &a;

上面的代码也可以写成

int a;

int* p = &a;

需要注意的是, int* 是指针变量的类型,而后面的 p 才是变量名,用来存储地址,因此地址 &a 是赋值给 p 而不是 *p 的。

    所以,int *p中的 p 必须赋予一个地址,如果不是地址,编译器则会报错(实在不能理解的话就把地址当做一个新的类型,类型不同肯定会报错嘛 ╮( ̄▽ ̄)╭)

const int *m1 = new int(10);

int* const m2 = new int(20);

    const只对它左边的东西起作用,唯一的例外就是const本身就是最左边的修饰符,那么它才会对右边的东西起作用。根据这个规则来判断,m1应该是常量指针(即,不能通过m1来修改它所指向的内容。);而m2应该是指针常量(即,不能让m2指向其他的内存模块)。

    当然,如果 a 代表的是数组首地址,那就另说了。

a为数组首地址时

#include<stdio.h>

int main(){

int a[3]={1,2,3};

int*p=a;

printf("%d\n",*p);

//输出 a[0]

return 0;

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。