平级指针与二级指针

平級指針之間作爲參數的話,參數傳遞的方式是值拷貝,就相當與普通參數的傳遞。
儘管在函數内部對指針開闢空間並賦值,但是由於是平級的指針,在函數周期結束后,函數内參數隨之消亡,由於是拷貝關係,函數外傳入的指針變量值及指向不發生變化。
所以要使用二級指針,函數内二級指針在函數周期結束的時候也會消亡,但函數内外二級指針指向的一級指針相同,所以可以將函數内的改變反饋到函數外部。

寫了一個小的例子:

#include  < stdio.h >
#include
< malloc.h >

void  createERR( int   * x)
{
     x 
= (int*)malloc(sizeof(int));
     
*= 16;
     printf(
"In func %d  ",*x);
}


void  createRight( int   ** x)
{
    
*= (int*)malloc(sizeof(int));
    
*(*x) = 16;
    printf(
"In func %d  ",*(*x));
}


void  main()
{

//平級指針   結果 5,16,5   
    int a=5;
    
int *pa = &a;
    printf(
"Before  %d  ",*pa);
    createERR(pa);
    printf(
"After   %d  ",*pa);
    printf(
" ");

//二級指針    結果 5,16,16    
    int b=5;
    
int *pb  =&b ;
    
int **ppb  =&pb;
    printf(
"Before  %d  ",*(*ppb));
    createRight(ppb);
    printf(
"After   %d  ",*(*ppb)); 

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值