...指针变量转换为(int **)就可以当作二维数组使用了?
发布网友
发布时间:2024-10-19 23:37
我来回答
共3个回答
热心网友
时间:2024-11-20 18:47
内存地址,实际上就是这块内存的编号。
无论什么类型的指针,都是一样的。。当你强转成另一种类型时,系统也就认为,这个指针所指的内容的格式是这样的。。
也就是说,char* 的指针,系统就认为里面内容的格式是字符类型;你把它强转成 int * 那么系统就认为他的内容是 int 类型。。就这样。。而int** 也就是 二维数组 的格式。。
热心网友
时间:2024-11-20 18:45
实际上内存中的数据就是01的组合,具体如何解释完全由你决定。
int**是一个指向int指针的指针。指针就可以用下标操作符“[]"加一个偏移量来读取
比如int*a =地址; a[2]就是a所指向的地址再加上2*sizieof(int)所指向的内存。那么int**就可以用两个”[]“来读取内存的内容
比如 int** a = 地址;a[0][2] 。同理,int***可以用三个下标操作符来读取内存。
如果你有VC++,你可以查看对应C++的汇编代码。下标操作符实际上就是汇编中的间接寻址。连书写方法都一样
热心网友
时间:2024-11-20 18:42
int ** 定义指针的指针,或者理解为指针数组。
下面举个例子:
int a[10];
int b[8];
int *p1=a;
int *p2=b;
上面四句能理解吧
int* p[2];定义一个数组,有2个元素,这2个元素为int* 类型的数据
p[0]=p1;//每个元素代表了一个一维数组
p[1]=p2;
这里的p就是一个指针数组,里面的元素的值不是普通的数据,而是数组a、b的首地址。