189 8069 5689

c语言动态分配的函数 c语言动态分配内存函数

c语言:怎样用malloc函数动态分配二维数组,使之可输入数组的行数和每行的列数。

这个是可以的,但是和其他网友说的一样,内存是线性的,当你在语言中分配一个多维数组的时候,编译器其实也是分配线性内存的,但是我们可以通过模拟来实现类似数组的操作,下面演示一个分配以及操作数组的实例(列数要固定,这里假设列数为4):

目前成都创新互联公司已为成百上千家的企业提供了网站建设、域名、网站空间绵阳服务器托管、企业网站设计、郑州网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

int _tmain(int argc, _TCHAR* argv[])

{

int (*p)[4] = (int (*)[4])0;

int row = 3;

int (*mem)[4] = (int (*)[4])0; // 定义数组首指针

mem = (int (*)[4])malloc(sizeof(int(*)[4]) * row); // 分配row行, 4列的数组

// 分别为二维数组的第一维各个元素赋值。

mem[0][0] = 1;

mem[0][1] = 2;

mem[0][2] = 3;

mem[0][3] = 4;

// 打印二维数组的各个元素的值

printf("%d, %d, %d, %d", mem[0][0], mem[0][1], mem[0][2], mem[0][3]);

free(mem);

return 0;

}

不过这里列数必须指定,还有一种方吵敏法,这种方法可以保证用户输入任意行或列,而不必要将列数定死,演示如下:

int getElement(int* arr, int colNum, int row, int col);

void setElement(int* arr, int colNum, int row, int col, int val);

int _tmain(int argc, _TCHAR* argv[])

{

int *arr = (int*)0;

int row = 3;

int col = 5;

//分配 row 行 col 列的整形数组

arr = (int*)malloc(sizeof(int) * col * row);

// 将最后一个元升猜枝素值设置为100

setElement(arr, col, 2, 4, 100);

//输出最后一个元素的值

printf("%d", getElement(arr, col, 2, 4));

free(arr);

return 0;

}

//各个参数说明如下:

//arr: 数组首地址

//colNum:数组列数

//row: 要取得的元素所在行

//col: 要取得的元素所在列

int getElement(int* arr, int colNum, int row, int col)

{

return *(arr + sizeof(int) * (row - 1) * colNum + col);

}

// 此函数用来设置指定行和列的元素的值:

//arr: 数组首地址

//colNum:数组列数

//row: 要取得的元素所在行

//col: 要取得的元素所在列

//val: 要设置的值

void setElement(int* arr, int colNum, int row, int col, int val)

{

*(arr + sizeof(int) * (row - 1) * colNum + col) = val;

}

其实归根到底,还是对指针的兆帆操作,希望可以帮到你,呵呵。

怎么实现C语言里面数组的动态分配?

1 定义指针。

2 使用malloc函数分配内存。陆亏

3 对数组进行访问即可。

对于一维动态数组,直接定义一维指针,并分配内存空间即可。

比如int类型的10个燃虚元素动态数组,写作

int *a;

a = (int *)malloc(sizeof(int) * 10);

如果是多维数组,需要从高维向低维逐层分配。如二维数组10*100空间。

int **a;

int i;

a = (int **) malloc(sizeof(int *) * 10); // 先分配皮悉燃10个int*的空间。

for(i = 0; i 100; i ++)

a[i] = (int *)malloc(sizeof(int) * 100); // 对于每个int*,分配100个元素的空间。

c语言中动态地址分配函数是什么呢?

函数猛汪原型:

void* malloc(int size);

参数:size 需要分配的内存大小。

返回猛腊值:申请到枝知仔的内存地址(void*)。

说明:

如果返回NULL则说明申请失败。


本文名称:c语言动态分配的函数 c语言动态分配内存函数
转载来于:http://jkwzsj.com/article/dspjjij.html

其他资讯