指针的数组

来源:互联网 发布:d3.js demo 编辑:程序博客网 时间:2024/06/01 10:28

前言:上一篇,提到了栈和堆,想必你也清楚了栈和堆的区别,现在 通过指针的数组来看一下,指针是如何操作栈和堆的。



栈里面的数组:

<span style="font-size:18px;">int a[10];   //这个空间实在栈内存中申请的int *p =NULL:p =a;                      //a是数组的首地住所以可以直接赋值给指针pp[0]=10;                 //就等同于a[0]=10;</span>



这个是堆里面的数组

<span style="font-size:18px;">int *a = NULL;a=(int *) malloc(10*sizeof(int));        //申请10个大小的int空间,这个空间是在堆内存里申请的if(NULL != a){  for(int i=0;i<10;i++)  a[i]=i+1;//给数组赋值}else{printf("没有申请成功")}free(a);</span>



这里值得一提的是,malloc()函数返回值 是 void * (任意类型的指针) 这里我们的a是int型指针,所以我们需要强制类型转换,就是在前面加上(int*)、另外申请 (new/malloc)出来的对象,都要判断一下是否为null,这样是一个好习惯,并且在使用完后要free()释放掉它、

free()函数的使用必须包含 #include<stdlib.h>头文件




                                           嘿嘿,指针目前也不需要学那么深,一点一点来,因为数据结构中指针用也就这么多。

0 0
原创粉丝点击