2 shinokisu Shinokisu 于 2015.06.28 09:15 提问

有一个关于整型指针二维数组的问题

int x[4][4],y[4][4],z=0,o=0;//z表示的是当前矩阵中的非零数字的数量,z为16则说明数字排满了,本局输了
//o表示最大数字的值,本例设定的是1024
typedef int row[4]; //row代表具有4个元素的整型数组
row p=x, *q=y;//P是整型指针数组,有4组,每组有4个元素。p[1]=x[1]=(x+1)

这是别人写的2048源码的一部分,想问一下,这里为什么要先定义一个有4个元素的整型数组,然后再用这个去定义一个指针然后取二位数组的首地址
如果我这里去掉
typedf int row[4]
然后直接
int *p=x
这样能表示二位数组吗?和上面的那种方式有什么区别呢_?

3个回答

StringLoveMe
StringLoveMe   2015.06.28 09:59

个人感觉没有什么区别吧,你可以改一下试试吗。

Shinokisu
Shinokisu 我已经试过用我说的方法改过了,然后会出现很多错误,我不知道为什么,所以没办法把程序运行起来。
2 年多之前 回复
caozhy
caozhy   Ds   Rxr 2015.06.28 10:39

两个办法都可以,用指针的话,需要动态分配内存
int * p = new int[row * column];

Shinokisu
Shinokisu 回复caozhy: 好,谢谢你的帮助
2 年多之前 回复
caozhy
caozhy 回复Shinokisu: 不是函数,是C++的运算符。详细自己google下。
2 年多之前 回复
Shinokisu
Shinokisu 回复caozhy: new delete 是怎么样的函数呢?
2 年多之前 回复
caozhy
caozhy 回复Shinokisu: 可以,不过最好用new delete,free有天生的缺陷,需要自己控制释放内存的大小,稍有不慎会造成内存泄漏。
2 年多之前 回复
Shinokisu
Shinokisu 我是用VC写的,C语言,如果我要分配给指针是这样写吗?int *p=(int *)malloc(sizeof(int));这样写吗?
2 年多之前 回复
caozhy
caozhy 回复Shinokisu: C语言只能用malloc
2 年多之前 回复
Shinokisu
Shinokisu 回复Shinokisu: 这个分配内存的方式是怎么样的,我在链表里面看到的动态分配内存是用calloc和malloc的,不理解这个。
2 年多之前 回复
caozhy
caozhy 回复Shinokisu: 指针不会分配内存。
2 年多之前 回复
Shinokisu
Shinokisu 为什么需要动态分布内存呢,int * p = new int[row * column];
2 年多之前 回复
JgBoy_cgr
JgBoy_cgr   2015.06.28 11:45

一维数组与二维数组在使用指针是不一样的

Shinokisu
Shinokisu 好,谢谢你的帮助
2 年多之前 回复
JgBoy_cgr
JgBoy_cgr 回复Shinokisu: 不好意思题目看错了,typedf int row[4]与int _*p=x_ 的区别在于前者的意思是将row定义为整形数组,而后者的意思是定义一个整形的指针变量,且后者不能表示数组,而前者可以,数组与变量之间同的不了,数组可以限制范围而变量不可以
2 年多之前 回复
Shinokisu
Shinokisu 能讲讲区别在哪里吗?
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片