z
zasdsd
V1
2022/04/17阅读:29主题:橙心
C语言学习日记_malloc和realloc
C语言学习日记
复习一下以前学的知识, demo很简单,就娱乐娱乐。
-
malloc函数是动态申请内存时使用的 -
realloc动态重新申请内存。 -
栈内存的创建 直接使用 int arr[xxx]
#include <stdio.h>
#include <stdlib.h>
/**
* 学习C的函数
* malloc动态申请内存
* realloc动态重新申请内存
*
* @return int
*/
int main(){
int num;
printf("请输入数组长度:");
scanf("%d",&num);
//动态申请内存
int * arr = (int *) malloc(sizeof(int )* num);
int input_num;
for (int i = 0; i < num; i++)
{
/* code */
printf("请输入数字:");
scanf("%d",&input_num);
arr[i] = input_num;
printf("数字是 %d, 数组的地址是 :%p, 其中一项的地址是: %p \n",*(arr+i), arr, arr+i);
}
for (int i = 0; i < num; i++)
{
/* 这里是玩的,这里居然能不停的取值和取地址,实际开发不要学我 */
printf("数字是 %d, 其地址是: %p \n",*(arr+i),
&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*(arr+i));
}
int new_num;
printf("请重新输入数组长度:");
scanf("%d",&new_num);
int count = num+new_num;
int * new_arr = (int *)realloc(arr,sizeof(int)*count);
/**
* 情况一 重新申请内存复用之前的内存
* 情况二 重新申请后,全新生成地址,这种情况 arr会释放
* 情况三 申请失败 所以下面需要判断new_arr是不是申请成功
*
*/
if (new_arr)
{
for (int i = 0; i < count; i++)
{
new_arr[i] = 100+i;
printf("new 数字是: %d, 地址是: %p \n",*(new_arr+i),new_arr+i);
}
}
//释放arr内存
if(arr){
free(arr);
arr = NULL;
}
if(new_arr){
free(new_arr);
new_arr = NULL;
}
return 0;
}
作者介绍
z
zasdsd
V1