2.定义一int型指针pi,为其申请30个整数的空间?

2.定义一int型指针pi,为其申请30个整数的空间?,第1张

这需要包含头文件stdlibh,然后使用冒泡排序的方法,排序后进行输出。
int i,p;
p=(int)malloc(30sizeof(int));
for(i=0;i<30;i++)
p[i]=rand()%701+200;
for(i=0;i<29;i++)
for(j=0;j<29-i;j++)
if(a[j]>a[j+1])
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
for(i=0;i<30;i++)
printf("%d ",a[j]);

上面那个,你貌似不懂耶
看好了
malloc
原型:extern void malloc(unsigned int num_bytes);

用法:#include <alloch>

功能:分配长度为num_bytes字节的内存

说明:如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。
当内存不再使用时,应使用free()函数将内存块释放。

举例:
// mallocc

#include <syslibh>
#include <alloch>
main()
{
char p;

clrscr(); // clear screen
p=(char )malloc(100);
if(p)
printf("Memory Allocated at: %x",p);
else
printf("Not Enough Memory!\n");
free(p);

getchar();
return 0;
}
free
原型:extern void free(void p);

用法:#include <alloch>

功能:释放指针p所指向的的内存空间。

说明:p所指向的内存空间必须是用calloc,malloc,realloc所分配的内存。
如果p为NULL或指向不存在的内存块则不做任何 *** 作。

举例:
// freec

#include <syslibh>
#include <alloch>
main()
{
char p;

clrscr(); // clear screen
textmode(0x00);
p=(char )malloc(100);
if(p)
printf("Memory Allocated at: %x",p);
else
printf("Not Enough Memory!\n");

getchar();
free(p); // release memory to reuse it
p=(char )calloc(100,1);
if(p)
printf("Memory Reallocated at: %x",p);
else
printf("Not Enough Memory!\n");
free(p); // release memory at program end

getchar();
return 0;
}
为什么很多人不喜欢c,c++,因为管理内存的一部分任何必须由程序员自己管理,不然很容易内存泄露,现在有很多检查内存泄露的软件比较常用的有(boundchecker)有兴趣的可以下个试一下自己的程序,你会发现自己好可怕。malloc free使用一般有几个原则(自己总结的,不一定正确,但很实用)
1 ,malloc free必须配套使用,并且尽可能逆序。
2 ,谁malloc的谁free
3,能够不动态分配的尽量不动态分配,动态分配是很费时间的,而且存在一定的风险。
很多人喜欢这样写程序:
type f()
{
type t = (type)malloc ( sizeof(type));


return t ;
}
这个肯定会出问题,一般象这种情况,一般声明f(type t),谁调用它谁为t分配空间,谁来释放它的空间。不过很有意思的是,在有写系统函数的会这样如(char asctime() ,它返回一个表示时间的字符指针,但是并不要求你释放,你也没有办法释放,但是我可以肯定它这个串肯定不是在堆区分配的)
free的顺序也很重要,很多时候free的时候会出现空指针的引用,不足为齐。有人提议free(t);t = NULL ;这种用法,有一定的道理,当你free一块空间后, *** 作系统不会立即回收,所以在你再次用t的时候可能还是可以用的,t就成了个野指针,而将其t = NULL后,对t的引用会出问题。

问这个问题你觉得有意思吗?int p知道一下就行了!不要觉得它酷。
二维数组的指针是 int (p)[X]这样的形式。和int p还是int p一点边都不沾。记住,申请空间,C语言永远是malloc等函数。C++是new *** 作符。申请的空间的位置通过定义一个指针变量来存储。

1
#include<stdioh>
#include<stdlibh>
void main()
{
float p;
int i;
int M = 4;//我这里是直接赋的值,当然你也可以将M搞成用户输入值
p=(float )malloc(Msizeof(float));
p[0]=11;
p[1]=22;
p[2]=3;
p[3]=4;
for(i=0;i<M;i++)
printf("%f ",p[i]);
}
2
#include<stdioh>
#include<stdlibh>
void main()
{
int p;
int M=3,N=4;//我这里是直接赋的值,当然你也可以将M,N搞成用户输入值
p=(int )malloc(sizeof(int )M);
p[0]=(int )malloc(sizeof(int)N);
p[1]=(int )malloc(sizeof(int)N);
p[2]=(int )malloc(sizeof(int)N);
p[0][0]=71;
printf("%d",p[0][0]);
}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/10557110.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-09
下一篇2023-05-09

发表评论

登录后才能评论

评论列表(0条)

    保存