动态内存分配:根据需要随时开辟,随时释放的内存分配方式。
分配时机和释放时机完全由程序员决定,由于没有数据声明,这部分空间没有名字。
无法像使用变量或数组那样通过变量名或数组名引用其中的数据,只能通过指针变量来访问。
注意malloc与free一般都是成对出现的只要成功申请的空间使用完后必须要释放,否则会造成内存的泄露。
1 #include<stdio.h> 2 #include<stdlib.h> 3 int sum(int *,int);///函数的声明 4 int mian() 5 { 6 int n,s,i,*p; 7 scanf("%d",&n); 8 p=(int *)malloc(n*sizeof(int));///malloc的返回值是void*,与p类型不一致需要强制转换,若不则自动但是会受到警告 9 if(p==NULL)///动态内存分配失败 10 exit(1);///停止程序的运行 11 for(i=0;i<=n-1;i++) 12 scanf("%d",p+1);///指针变量的输入 13 s=sum(p,n);///调用函数传指针变量 14 printf("%d\n",s); 15 free(p);///释放内存中由malloc()函数分配的空间 16 return 0; 17 } 18 int sum(int *p,int n) 19 { 20 int i,s=0; 21 for(i=0;i<=n-1;i++) 22 s=s+(*p++); 23 return s; 24 }
原文地址:https://www.cnblogs.com/wkfvawl/p/8946643.html
时间: 2024-10-02 22:07:07