首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

指针的困惑

2013-10-27 
指针的不解指针的不解:我希望用a指针指向b指针指向的内存,为什么下面的做法不可以?#include stdlib.hvoi

指针的不解
指针的不解:我希望用a指针指向b指针指向的内存,为什么下面的做法不可以?

#include <stdlib.h>
void Exchange(int *a, int *b)
{
a = b;//把a指针指向的内存地址赋给。
}

void main()
{
int *a = NULL;
int *b = ( int *) malloc(sizeof(int));
*b = 5;
Exchange(a,b);//但是函数返回后,a依然为NULL,请问这是为什么呢?}
c 内存 指针 malloc
[解决办法]
因为函数形参是一份copy
要达到目的可以用二级指针或者指针的引用
解法一:
void Exchange(int **a, int **b)
 {     *a = *b;}

解法二:
void Exchange(int *&a, int *&b) {     a = b;}  
[解决办法]
经常看见
说着指针不解 指针很难 
其实 你不懂的东西是 函数参数传递 和 指针 没什么必然联系
指针:真是无妄之灾
函数参数:谢谢你帮我背黑锅了
 
C函数参数只有值传递 
其实学函数的时候 早就将结果你这种写法
swap(a, b)
{
t = a
a = b 
b = t
}
//没有成功交换
 
你这里的写法是

    int *a = NULL;
    /*Exchange(a,b);函数调用其实是*/
    Exchange.a = main.a //参数传递
    Exchange.b = main.b //参数传递
    Exchange.a = Exchange.b //函数执行
}//函数调用解释
    //以上代码中 针对main.a的赋值只有 = NULL 这一次 其他时候最多也只是把main.c写在赋值符号右边一直没有修改main.a的值

热点排行