动态内存可跨函数使用

 1 # include <stdio.h>
 2 
 3 void f(int **q)
 4 {
 5     int i =5;
 6             //*q = i;errro 因为*q = i;等价于 p = i;这样写是错的。
 7     //*q等价于p,q和**q都不等于p
 8 
 9      *q = &i;  //p = &i;
10 }
11 
12 int main()
13 {
14     int *p;
15 
16     f(&p);
17     printf("*p = %d\n",*p);//本语句语法上没有问题,但逻辑上有问题。想想!!能运行,编译器有问题
18                       //
19 
20     return 0;
21 
22 }
23 /*
24 在Vc++6.0中显示的结果是:
25 =============================================================
26 *p = 5
27 =============================================================
28 */
 1 # include <stdio.h>
 2 # include <malloc.h>
 3 void f(int ** q)
 4 {
 5     *q = (int *)malloc(sizeof(int));
 6     **q = 4;  // 理解: *q = p;   **q = *p可以赋值。
 7     
 8 
 9 
10 }
11 
12 int main(void)
13 {
14     int * p;
15     f(&p);
16     printf("*p = %d\n", *p);
17 
18     return 0;
19 
20 }
21 
22 /*
23 在Vc++6.0中显示的结果是:
24 =================================================
25 *p = 4
26 =================================================

27  */ 

转载于:https://www.cnblogs.com/jssong20000/archive/2012/09/05/2672493.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值