中易网

C语言 如何给指针数组划分动态存储空间?

答案:3  悬赏:70  
解决时间 2021-10-13 11:23
  • 提问者网友:戎马万世
  • 2021-10-13 00:45
C语言 如何给指针数组划分动态存储空间?
最佳答案
  • 二级知识专家网友:一袍清酒付
  • 2021-10-13 01:19
动态分配,用虚拟存储。

#include <stdio.h>
#define array_size 1000000
void main()
{
unsigned char *a[8];
int i;
for (i=0;i<8;i++){
a[i] = (unsigned char *) malloc(array_size * sizeof(unsigned char));
}
if  ( !a[7]) {
printf("No enough memory\n");
exit(1);
}
printf("pass alloc\n");
}
全部回答
  • 1楼网友:几近狂妄
  • 2021-10-13 02:49
我暂时保留我的看法!
  • 2楼网友:鱼芗
  • 2021-10-13 02:27
数据结构专门有讲的,下几个课件看看就行了. 1.分配内存空间函数malloc  调用形式: (类型说明符*) malloc (size) 功能:在内存的动态存储区中分配一块长度为"size" 字节的连续区域。函数的返回值为该区域的首地址。 “类型说明符”表示把该区域用于何种数据类型。(类型说明符*)表示把返回值强制转换为该类型指针。“size”是一个无符号数。例如: pc=(char *) malloc (100); 表示分配100个字节的内存空间,并强制转换为字符数组类型, 函数的返回值为指向该字符数组的指针, 把该指针赋予指针变量pc。  2.分配内存空间函数 calloc  calloc 也用于分配内存空间。调用形式: (类型说明符*)calloc(n,size) 功能:在内存动态存储区中分配n块长度为“size”字节的连续区域。函数的返回值为该区域的首地址。(类型说明符*)用于强制类型转换。calloc函数与malloc 函数的区别仅在于一次可以分配n块区域。例如: ps=(struet stu*) calloc(2,sizeof (struct stu)); 其中的sizeof(struct stu)是求stu的结构长度。因此该语句的意思是:按stu的长度分配2块连续区域,强制转换为stu类型,并把其首地址赋予指针变量ps。  3.释放内存空间函数free  调用形式: free(void*ptr); 功能:释放ptr所指向的一块内存空间,ptr 是一个任意类型的指针变量,它指向被释放区域的首地址。被释放区应是由malloc或calloc函数所分配的区域: 如 main() { struct stu {  int num;  char *name;  char sex;  float score; } *ps; ps=(struct stu*)malloc(sizeof(struct stu)); ps->num=102; ps->name="Zhang ping"; ps->sex='M'; ps->score=62.5; printf("Number=%d\nName=%s\n",ps->num,ps->name); printf("Sex=%c\nScore=%f\n",ps->sex,ps->score); free(ps); } 0
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息