C/C++____指针____操作

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)的形式来表示。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值