#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int *ptr = NULL;
int i,num;
printf("请输入您要录入数字的个数:");
scanf("%d",&num);
ptr = (int *)malloc(num * sizeof(int)); // **申请动态地址
if (NULL == ptr) // **判断是否分配成功(必须步骤)
{
exit(1);
}
for (i = 0; i < num; i ++)
{
printf("第%d个数字 == \n",i + 1);
// scanf("%d",ptr + i);// **等价于 scanf("%d",&ptr[i]);
scanf("%d",&ptr[i]);
}
printf("打印ptr里面的数据:\n");
for (i = 0; i < num; i ++)
{
printf("第%d个的地址 == %x\n",i + 1,ptr + i);
// printf("%d ",*(ptr + i));// **等价于 printf("%d ",ptr[i]);
printf("%d \n",ptr[i]);
}
printf("\n");
// free(ptr);
printf("————释放后————\n");
for (i = 0; i < num; i ++)
{
printf("第%d个的地址 == %x\n",i + 1,ptr +i); // **瞧一瞧地址
printf("第%d个的值 == %d\n",i + 1,*(ptr + i));
}
printf("\n");
printf("————初始化后————\n");
memset(ptr, 0, num * sizeof(int)); // **初始化为0
for (i = 0; i < num; i ++)
{
printf("%d ",*(ptr + i));
printf("%x ",ptr + i);
}
printf("\n");
free(ptr);
ptr == NULL;
printf("%d",*ptr);
return 0;
}
/**注意/
// malloc,calloc,realloc 都需要头文件 stdlib.h
// memcpy,memset…mem开头的函数,都需要头文件 string.h
// malloc,calloc,realloc,memcpy,mem…与free函数成对出现 ,防止内存泄漏(用光)
/*****************************************************/