首页 > 代码库 > 指针的数组

指针的数组

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



栈里面的数组:

<span style="font-size:18px;">int a[10];   //这个空间实在栈内存中申请的

int *p =NULL:

p =a;                      //a是数组的首地住所以可以直接赋值给指针p

p[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>头文件




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

指针的数组