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");
}
#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
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息