2025-06-18 03:47:21

请注意,函数的参数变量,是函数在执行时刻临时申请的变量,这与在函数体中申请的临时变量一样,函数运行中可用,但函数执行return后将会被舍弃。函数调用inv(a,10,&max,&min);就是将数组a的首地址取出来赋值给临时变量x,10赋值给n,(主程序中的变量)max的地址赋值给(参数临时变量)max,(主程序中的变量)min的地址赋值给(参数临时变量)min。
由于参数的临时性,去直接修改参数变量的值,无法实现将修改后的值返回给调用者,只能利用指针型变量的特点来实现:将它指向的变量(这个被指向的变量可以是调用者的变量)的值进行修改,相当于我们改变的是门牌号中的住户而非去修改门牌号。
另外:*max=x; 是将x的值取出赋值给max指向的变量,这个指向的变量是main函数中的max,而max=x;是将x的值取出赋值给临时变量max,本来max中存放的是主函数中max变量的地址,因此这个地址会被x的值冲掉,关键你的本意并不是这样的。
那x不是已经被赋予主函数中a【】数组的地址了吗,现在把他给子函数的max不行吗
关键是主程序赋值给参数变量max的是指向主程序中max变量地址,也希望将最大值赋值给主程序中max变量,max=x的赋值后,这个目标无法实现了。
是不是max=x后进行后面的代码后读取的是max是保存了形参x的地址,而不是主函数的地址,所以返回后给的是x,而不是主函数的max,是这样吗
可以给,但程序运行完毕无法实现将最大和最小值赋值给主程序中的max和min变量
2025-06-18 16:36:00
在子函数中: max和min是指针变量, x[0]是int变量, 你把int变量赋值给指针变量, 单从类型上来说就不正确
max和min所指向的内存单元才可以看作是一个int变量, 获取这个所指向的内存单元, 形式为*max 或 *min

意思是int x【】是整形变量不是数组是吗
意思是int x【】是整形变量不是数组是吗
定义: int x[10];
变量x是数组, 如果确定到该数组中的某一个元素, 则是int, 如:x[5] 则可以看作int变量
2025-06-18 04:33:34
那不是后面就修改了吗,后面的代码不是交换了顺序了吗
什么修改不修改的?你的表达能力让人头大。。。你是没搞清楚*max和max,函数形参和函数实参的意义和区别吧,再回去看看书,稍微有点概念再来追问,好吧!
*max是里面的地址所对应的值,不是可以max=x吗,x不就是数组吗
*max是里面的地址所对应的值,不是可以max=x吗,x不就是数组吗
*max是里面的地址所对应的值,不是可以max=x吗,x不就是数组吗
*max是里面的地址所对应的值,不是可以max=x吗,x不就是数组吗
x不是数组,x是数组的首地址
2025-06-18 12:41:43
2025-06-18 06:13:14