C/C++____指针____操作

来源:互联网 发布:ghost预装软件 编辑:程序博客网 时间:2024/06/06 20:01

1,  使用指向指针的指针,用来把穿过来的指针中的地址 赋予NULL

void av_freep(void *arg)

{
    void **ptr = (void **)arg;
    av_free(*ptr);
    *ptr = NULL;    ///这样原来的指针指向的地址就成了NULL. 如果用单指针, 这样ptr=NULL,就是把这个局部变量赋值为NULL,而原来指针指向的地址还是没有变化.故需要用指向指针的指针.

}



---------------------------------------------------------------------------

#include "stdio.h"///练习数组指针,这个一个指向数组的数组指针,即在一个数组中放多个指针,每个指针分别指向一个数组。void main(){    int a[2][3][3];   ///这个比较特殊一点,这样定义指针p,这个p指向的是一个2维数组。    int aa[5][3];    int (*b)[3]=&a[0][0]; ///由于一对圆括号的存在,所以*号首先与b结合,说明b是一个指针变量,然后再与说明符[3]结合,    ///说明指针变量b的基类型是一个包含有3个int元素的数组;; 特意说明这个指向的类型是int [3];      ///如果别的要定义,需要定义一个类型为int [3] 的类型,int a[2][3][3];或者int aa[5][3];        a[0][0][0]=1;    a[0][0][1]=2;    a[0][0][2]=3;    a[0][1][0]=4;    a[0][1][1]=558555;    a[0][1][2]=6;     printf("%d\n",b[1][1]);          aa[0][0]=470;     aa[0][1]=51;     aa[0][2]=52;     aa[1][0]=53;     aa[1][1]=54;          b=aa;     printf("b =%d\n",b[0][1]);     }
总结: 二维数组,是一个数组,一行一行的排列下去,这个数组可以用int *p;这样的一维数组来表示,也可以用int (*)p[]这样的二维数组来表示,注意这里既然是二维数组,在打印或输出的 时候就应该用二维数组来表示:*(*(a+1)+1)的形式来表示。


原创粉丝点击