#include<stdio.h>
#include<stdlib.h>
//malloc()
//calloc()
void main1()
{
int num;
scanf_s("%d", &num);
//double *p = (double *)malloc(sizeof(double)*num);
double *p = (double *)calloc(num, sizeof(double));
for (double *pnum = p, i = 0.0; pnum < p + num; pnum++, i+=1.0)
{
pnum[(int)i] = i;
printf("%lf\n", pnum[(int)i]);
}
double number = 99;
number++; //浮点类型数据也可以用自增运算符
printf("%lf\n", number);
free(p);
system("pause");
}
//动态增加的数组
//realloc
void main()
{
int num;
scanf_s("%d", &num);
int *p = (int *)malloc(sizeof(int)*num);
printf("%x\n", p);
for (int i = 0; i < num; i++)
{
p[i] = i;
printf("%d,%x\n", p[i], p + i);
}
int newnum;
scanf_s("%d", &newnum);
//分配内存空间字节数:(newnum-num)*sizeof(int)
int *newp = realloc(p, newnum); //newnum即数组元素个数增加到多少
printf("\nnewp = %p\n", newp); //newp的值等于p,仍然是数组的首地址
for (int i = num; i < newnum; i++)
{
newp[i] = i;
printf("%d,%x\n", newp[i], &newp[i]);
}
system("pause");
}动态内存分配
最新推荐文章于 2024-09-25 09:50:19 发布
本文介绍了C语言中动态内存分配的几种方式,包括使用malloc()、calloc()和realloc()函数来创建和调整动态数组的过程。文章通过具体示例展示了如何初始化动态分配的内存并进行自增操作,以及如何在不丢失已有数据的前提下改变数组大小。
362

被折叠的 条评论
为什么被折叠?



