数组指针和二维数组的问题2
小甲鱼说的这个原理我看懂了,但是我没完全懂这里面各个符号所代表的意义,第六行程序,int (*p) = (int (*))&array;按照从左到右的优先级,是先定义为指针,然后指向带有三个元素的数组,而后面的array是指向带有9个元素的数组,怎么就分成3*3了?#include <stdio.h>
int main()
{
int array = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int (*p) = (int (*))&array;
printf("%d\n", p);
return 0;
} 这句话最主要的是int (*p) = (int (*))&array最主要的是(int (*)),使用了强制转换然后将数组的9个元素强转为3*3的二维数组 FengYue20 发表于 2022-5-13 16:56
这句话最主要的是int (*p) = (int (*))&array最主要的是(int (*)),使用了强制转换然后将数组的9 ...
对,我迷惑的就是这个,我不明白其中的转换原理,我不能(int (*))是怎么把后面的数组给转换成3*3的 {:10_266:}没人了吗?没人讲解一下为啥吗 指针的值永远都是地址,所谓 类型 只是告知编译器从 此地址开始往后要读多少字节的内容,已什么样的形式解读罢了。实际内存中满是0和1的二进制码
数组那片内存的数据从来就没有改变,强制转换只是改变了解读它的方式。
风车呼呼呼 发表于 2022-5-13 22:05
指针的值永远都是地址,所谓 类型 只是告知编译器从 此地址开始往后要读多少字节的内容,已什么样的形式解 ...
{:10_266:}谢谢老哥了,虽然这不是我想问的,但是好像其他人都不知道了 风车呼呼呼 发表于 2022-5-13 22:05
指针的值永远都是地址,所谓 类型 只是告知编译器从 此地址开始往后要读多少字节的内容,已什么样的形式解 ...
我现在大概是看懂了
页:
[1]