为您找到"
int **p=&a,怎么理解?这样写对吗?
"相关结果约100,000,000个
也就是p指向a了,后续使用p[0]也就是a[0]。p本身只是一个指针,并没有指向任何内存,所以他不能直接赋值。如果你想*p=a的话,需要给p申请一个空间。 p = (int *) malloc(sizeof(int*)); 然后赋值。最后使用完需要释放。free(p);这个需要画图才能理解,刚开始学都会比较晕。
先上结论:对于int a[5],*p;p=a; 或p=&a[0]是正确的 p=&a严格来说是错误的 首先要搞清楚a与&a的区别:a表示数组首元素的首地址,即元素a[0]的地址;&a表示整个数组的地址。二者的值是相同的,但意义并不一样。正如成都市政府与四川省政府的地址都在成都,但二者表示的含义不同。如下...
不一样,前者将a变量的地址赋给p指向的那个对象,一般没这样的写法。后者是把a的地址赋给p指针,等于让p指向a变量
p是地址,*p是内容 这里有点绕,*p里面装的是表示a的地址的16位数,所以p不是指向a的地址的指针,*p也不是指向a的地址的指针
不对;如果a 是 int * 类型的 这叫做声明一个int * 的指针p ,并且把 a 的 值 赋值给b 如果a 是int类型的 那你这个语句就写错了
int a=2;//定义变量a,初始化值2 int *p=&a;//指针p指向变量a,换言之,指针p储存了变量a的地址 int *q=p;//指针q储存了指针p储存的地址(变量a的地址)换言之,指针q指向变量a q//可以代表变量a的值 q//可以代表变量a的地址
int *p 是 变量声明,声明 p 是指针,用于指向 整型量。int *p=“abcd” ; 声明并初始化。用了错误的表达,因为 p 是整型 指针,初始化 要 赋给int 型 变量的地址,而不是双引号括起的 “字符串常量”。int *p=&a; 声明并初始化。 初始化,让 p 指向 a 的地址。 a 应当是 已知...
p=&a//int *p,p是一个指向int类型的指针,而&a表示的是指向整个数组的指针(取一个数组名得地址所产生的是一个指向数组的指针)。p是int类型的指针,而&a是指向数组的指针,类型不匹配,所以式子是错误的。要想得到正确的式子的话,可以这样 int(*q)[5]=&a//这样的话q是一个指向拥有五个...
对比两行代码:int *p=a[0];int (*p2)[2] = &a[1];一、p是一个int型的指针,指向一个int型地址,类型为int *。p2是一个指向维度2大小的int数组的指针,类型为int(*)[2]。对p取值,*p是一个值,在这个代码中对应a数组第一行第一列的元素值0。对p2取值,*p2是一个指针,表示指向...
这是因为如果不加(int*)进行强制转换,在C++编译器中是无法通过编译的。a加了const表示常量,告诉编译器这不能修改值,而如果进行int *p = &a;这就可能通过p修改a的值,C++编译器会阻止你这么做,编译报错。加了(int*)&a编译器就不管你了,它的检查工作是完成了但留下了隐患。运行这个代码你会...