#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;
}