C语言中实参和形参问题&&函数使用数组作为参数的问题
来源:互联网 发布:中国网络安全法实名制 编辑:程序博客网 时间:2024/05/17 23:44
引例:
void f(int a) {
a = 3;
}
int main() {
int b = 2;
f(b);
}
例子中:a是形参,b是实参
传递过程&&内存情况:
在被调用前,函数的形参是不分配内存的,也就是说,不调用f()的话,a不在内存里面
一旦调用了函数,马上为函数的形参分配内存,此时分配一个int空间大小的内存给a,此时,a和b在内存中都有内存(不同的内存),传参的时候,程序传递实参的值给形参
所以:在f函数内部改变参数的值,只改变了形参的值,形参在函数结束后被释放,main里面的b值不变
当形参是数组的时候:
void f(int a[]) {
a[2] = 3;
}
int main() {
int b [5] = {1,1,1,1,1};
f(b);
}
此时情况有变,实际上这种情况下实参传递的是数组的首地址,那么一旦调用函数的时候,内存里会存在两个指针变量(一个形参一个实参),这两个变量指向同一位置,当然,函数内改变形参的值不会使得main里的实参地址发生变化,但是,由于两个参数指向同一位置,所以,通过形参来改变数组元素的值之后,main里面的实参在去访问数组的时候,数组的值已经改变
&和*的区别:
例子: int a;int *b = &a;
&符号用来处理一个变量,但不是通常的-访问这个变量的内容,而是取出这个变量的地址
int *b;此时b是一个指向int空间的指针,也就是说它是一个未分配的地址int*只用来定义,定义的变量是一个地址(索引),可以通过这个变量来对这段空间操作
而&是对一个已存在的变量取地址,取完地址之后同样可以通过地址操作
*x是找到x地址的变量,取它的值,所以*和&是反操作,&x得到x的地址*,*x得到x的值x
- C语言中实参和形参问题&&函数使用数组作为参数的问题
- C语言中数组作为函数参数的问题
- C语言中函数作为参数的问题
- C语言的形参和实参个数不一致问题
- C语言中 数组到底是不是指针和数组作为参数问题
- 关于指针作为函数参数传递的理解,对比普通变量作为函数参数的需注意点,其实就是行参和实参的问题。
- 关于在C/C++语言中,函数如何返回数组,数组如何作为参数传递以及返回数组的函数该如何调用问题的总结
- 精通C语言4-一维或多维数组作为函数参数的问题
- C里面多维数组作为函数参数的问题
- JS中全局变量作为函数实参传入的问题
- 指针数组作为函数参数的使用问题
- 数组作为函数参数的指针问题
- C语言中指针变量作为函数参数和一般变量作为函数参数的区别
- C语言中函数调用、实参、形参的选择
- 数组作为实参传给函数的形参指针
- C99中变长数组作为函数形参的问题
- 8.3 C语言函数的形参和实参
- 函数调用中实参和形参变化问题
- Android中的接口回调技术
- CC2530 定时器3使用 -- 实现精确定时
- 大臣的旅费(dfs)
- IIS7/8下提示 HTTP 错误 404.13
- caffe卷积原理
- C语言中实参和形参问题&&函数使用数组作为参数的问题
- Java Servlet jsp的缺点
- Java多线程/并发27、DelayQueue延迟队列模拟实现Session
- 实现验证码倒计时
- Error configuring application listener of class org.springframework.web.context.ContextLoaderListene
- 百度地图实现多点定位(包含两种点:当前自己所在的位置和周围需要查找的点 )
- 基于人脸的视频检索技术研究
- LeetCode1. Two Sum
- cassandra设计模式(第二版)_分析模式(大数据处理)