C语言有关函数传参及指针的分析

本文介绍了C语言中的一级指针与二级指针的概念及其应用,并通过实例讲解了如何利用指针实现函数参数的值传递与地址传递,进而探讨了二级指针在内存空间管理中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.二级指针

*有两种用途,用在定义的时候,一级指针加一个,二级指针加两个,以此类推;用在其它地方为取值作用,取地址对应的值。

&的用途为取名称对应内存地址。

  int  a = 100;
  int *p1 = &a;
  int **p2 = &p1;

内存地址         &p2                             &p1                                   &a

               |——————|          |———————|            |————————|

内存量    |       &p1        |          |          &a           |            |           100           |

               |___________|         |_____________|            |______________|

名称对应           p2                               p1                                    a


2.C语言函数的值传递

看如下代码:

- (void)test{
    
    int i = 100;
    change(i);
    NSLog(@"i = %d",i);
    
}

void change(int ic){
    ic = 66;
}
输出结果为i = 100,change()函数并不会改变 i 的值,因为传递的参数,是 i 在内存中的值,如果用指针进行参数传递:

- (void)test{
    
    int i = 100;
    change(&i);
    NSLog(@"i = %d",i);
    
}

void change(int *ic){
    *ic = 66;
}
这样,输出的结果为 i = 66,因为传参时, i 的内存地址赋给了 一级指针变量 ic,ic此时是直接操作 i 的。


3.指针的指针(二级指针)

  先说下我的大致理解,一级指针:对内存值的管理;二级指针:对地址,内存空间的管理。(如有错误,请指出)

- (void)test{
    
    int *num;
    int result;
    result = num_init(&num);
}

int num_init(int **num_t){
    *num_t = malloc(100);
    return 1;
}
malloc函数为,向系统申请分配大小100个字节的内存空间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值