C++一句指针的语句不懂

来源:百度知道 编辑:UC知道 时间:2024/09/28 15:24:16
int (*p)[4]=(int(*)[4])b;
是什么意思啊,特别是右值;

左:p与*结合,表示p是指针,然后与[4]结合,表示指向一个带有4个元素的数组,再与int结合,表示指向的数组类型为整型。

右:b,与括号内结合(显式转换),显式转换:(*)表示这是指针,然后与[4]结合,表示指向一个带有四个元素的数组,再与int结合,表示指向的数组为整型。

总体:

定义 “指向 带有4个元素 的 数组” 的指针p,初始化为b,其中b被强制转换为一个“指向 带有4个元素 的 数组”的指针。

int *p[4]; 的意思是申明一个数组p,其中p中的每一个元素都是一个指针,所指向的数据类型是整形。
而 int (*p)[4]; 就只申明一个指针,这个指针是指向一个四维的数组。
至于(int(*)[4])b;我也不是很清楚,学C++很久了。我想,可能b是一个四维数组,利用(int(*)[4])把b强制转换成一个指针,即指向一个四维的数组的指针。如有错,还请见谅!
左值就是可以放在"="左边的数据。并不是所有的数据都可以放在赋值号的左边,所以就有的右值。

int (*p)[4]定义p是一个指向(指向整型)的4个数的一维数组。
(int (*)[4])b;这里b是另一个指针,指针变量b的值,它的值是地址,那么(int (*)[4])就是说强制转换这个地址为指向(指向整型)的4个数的一维数组的指针地址。

p是一个指向有4个整型元素的数组的指针。

(int(*)[4])b
是将b强制转换为指向有4个整型元素的数组的指针值。