c指针在函数调用过程中的问题
来源:互联网 发布:三组数据如何做曲线图 编辑:程序博客网 时间:2024/05/13 10:22
</pre><p></p><pre name="code" class="cpp">#include <stdio.h>#include <stdlib.h>int *c;void f(int *b){int a = 10;b = &a; }int main(){int tmp;f(&tmp);printf("%d\n",tmp);return 0;}
上面这段代码打印的结果是:2130567168
分析一下就可以知道,变量tmp的地址传递到函数f()中,指针b的值就是tmp的地址,后面b的值变成了a的地址,所以函数f()调用结束后,tmp地址存的值并没有发生
变化。局部变量未初始化,打印的值随机。
稍微改一下:
#include <stdio.h>#include <stdlib.h>int *c;void f(int *b){int a = 10;b = &a; }int main(){int *tmp;f(tmp);printf("%d\n",*tmp);return 0;}
这样输入的结果是:0
这个函数分析一下就是,指针tmp传入函数f中的b变量,相当于b=tmp,随后b=&a,这一过程tmp指针的内容并没有发生改变,所以打印出来指针指向的地址值是随机的
再修改一下程序:
#include <stdio.h>#include <stdlib.h>int *c;void f(){int a = 10;c = &a; }int main(){int *tmp;f();printf("%d\n",*c);return 0;}
这样得到的结果是:10
这一过程指针c的值是a的地址,所以打印c指向的数值就是a的值
-------------------------------------------分割线--------------------------------------------------------------------------------
所以要想获得a的值,要么传递指针后,指针指向的地址存入a的值(而不是a的地址)
要么就是获得a的地址,通过return或者全局变量
0 0
- c指针在函数调用过程中的问题
- C语言结构体指针在函数调用中的使用
- 关于指针在函数中的调用
- c函数调用中指针传递问题
- C语言函数调用模型[调用过程中在堆栈中的出栈、进栈顺序]
- C函数调用过程
- C函数调用过程
- C函数调用过程
- c中的函数指针
- C中的函数指针
- C/C++—— 在构造函数中调用虚函数能实现多态吗(Vptr指针初始化的过程分析)
- C 指针指向调用函数内部的零时变量问题
- 调用类中的函数指针
- C语言调用函数指针
- 关于函数调用过程中的实参和形参问题
- 一级指针,二级指针在函数调用传址问题。在子函数中分配内存。
- C/C++中函数的传值调用、指针调用、引用调用问题
- oracle 在C#中的调用存储过程参数问题
- java常用对象
- 全局滑动返回的第三方库
- 矩阵手册
- WebView详解
- 每月最少要花660元,你信吗?
- c指针在函数调用过程中的问题
- 记录我的Thrift 入门学习
- 详细了解java中的null
- echarts 生成统计图时,自动保存图片到服务器,并使用freemarker生成word
- dorado5-css的设置
- 我同学的易宝支付面试经历
- jmeter使用教程
- IO流--概述
- Android使用SQLite数据库的简单实例