C/C++中为二维数组分配内存
今天参加笔试,其中有两题是分配内存的,第一题是动态分配一个一维数组,第二个题是动态分配一个二维数组.第一题和第二题我分别是这样写的:
/*第一题*/
p=(float*)malloc(sizeof(float[M]));
/*第二题*/
p=(float*)malloc(sizeof(int[M][N]));
结果说我第二题错了,我还不明白错哪了,我又问写成M*N对不,结果还是说不对.刚查了一下,二维数组应该分别第一维和第二维分配空间,而我一次就分配了,所以错在这里了,正确的应该这样:
int i;
int **p;
p=(int*)malloc(sizeof(int)*M);/*给行分配空间*/
for(i=0;i<M;i++)
{
p[i]=(int*)malloc(sizeof(int)*N);/*给列分配空间*/
}
整体意思就是分配M行,每行有N个单元,即第一维都是指向N个单元的指针.
参考:http://www.docin.com/p-2706237.html
相关文档:
这篇文章是使用SQLite C/C++接口的一个概要介绍和入门指南。
由于早期的SQLite只支持5个C/C++接口,因而非常容易学习和使用,但是随着SQLite功能的增强,新的C/C++接口不断的增加进来,到现在有超过150个不同的API接口。这往往使初学者望而却步。幸运的是,大多数SQLite中的C/C++接口是专用的,因而很少被使用到。尽管有这 ......
C语言函数的出口:return语句(高质量c/c++编程指南) 收藏
今天看到了一篇关于c/c++语言中,对于函数出口处:return语句的正确性和效率性的检查问题。平时我们都不太看重return语句的,认为它简单,不是很重要,其实不然,return语句要是写的不好,很容易导致效率低下,甚至会出错!特别是在处理指针时。
下面看看要 ......
存储期storage duration(extent), 指为对象配置的内存的存活期,比如local extent
生存空间scope,指对象在程序内的存活区域,即可被访问的范围,比如file scope, static scope, local scope
C
local static object
函数内部的object,具有local scope,但是每次函数被调用后该对象的内存不清理,到下次调用还保 ......