慕姐5552928
2017-12-26 16:40
#include<stdio.h> void change(int b) { b = 5; } int main() { int a=3; change(a); printf("%d\n",a); return 0; }
这个代码执行出来的结果还是3,change函数里的操作不影响main函数里定义的a的值
#include<stdio.h> void change(int arr1[]) { arr1[0]= 3; } int main() { int arr[]={1,2,3}; change(arr); printf("%d\n",arr[0]); return 0; }
但是对于数组来言,在change函数里改变了只是作为形参的arr1的一个元素的值,却影响了在main函数中定义的arr的第一个元素的值。
求解释,谢谢
#include<stdio.h>
void change(int *b)
{
*b = 5;
}
int main()
{
int a=3;
change(&a);
printf("%d\n",a);
return 0;
}
//这个要用到指针,具体你可以参见Linux C语言 初始指针与内存教程的2.1,一样一样的
数组是分配好内存的,是有明确的地址的,所以被调函数里的值变了,也就影响了在main函数中。
如果是第一种,就要把值返回来,用return b
int change(int b) //返回类型为整形 ,用int
{
b = 5;
return b ; //
}
int main()
{
int a=3;
a=change(a); //
printf("%d\n",a);
return 0;
}
C语言入门
926286 学习 · 20799 问题
相似问题
回答 4
回答 1