C里面函数和Java里面的函数差不了多少,但是也有区别 区别1:C里面的函数需要先申明再使用
错误方式如下,change函数写在了main函数下面
#include <stdio.h>
int main(){
//函数, 取修改一个数(指针操作)
int i = 100;
change1(i);
return 0;
}
// 函数不能写在main的上面 非要写在后面,要先声明再实现
void change(int i){ // 这个函数传过来的i c会再创建一个跟上面的i是不一样的,地址也不一样
i = 300; // 即使改变这个i 传进来的主i 也是不改变
printf("change1 %p\n", &i);
}
正确方式一:
#include <stdio.h>
// 函数在Main之前
void change(int i){ // 这个函数传过来的i c会再创建一个跟上面的i是不一样的,地址也不一样
i = 300; // 即使改变这个i 传进来的主i 也是不改变
printf("change1 %p\n", &i);
}
int main(){
//函数, 取修改一个数(指针操作)
int i = 100;
change1(i);
return 0;
}
正确方式二
#include <stdio.h>
// 先做申明
void change1(int i);
int main(){
//函数, 取修改一个数(指针操作)
int i = 100;
change1(i);
return 0;
}
void change(int i){ // 这个函数传过来的i c会再创建一个跟上面的i是不一样的,地址也不一样
i = 300; // 即使改变这个i 传进来的主i 也是不改变
printf("change1 %p\n", &i);
}
函数里直接修改传过来的值是不能改变原有值 比如下面
#include <stdio.h>
// 先做申明
void change(int i);
int main(){
//函数, 取修改一个数(指针操作)
int i = 100;
printf("%d\n", i);
// 将i传进change里面 change函数里把i改成了300 但是原有的i是不变的
// 因为函数接收的变量,c会再创建一个跟上面的i不一样的变量,导致他们的地址也不一样,所以改不了。
change(i);
printf("%d\n", i);
return 0;
}
void change(int i){
i = 300; // 即使改变这个i 传进来的主i 也是不改变
printf("change %p\n", &i);
}
函数想要修改值,则参数需要传内存地址,代码如下
#include <stdio.h>
void change(int * i);
int main(){
//函数, 取修改一个数(指针操作)
int i = 100;
change(&i);
return 0;
}
void change(int * i){
*i = 300; // 即使改变这个i 传进来的主i 也是不改变
printf("change %d\n", *i);
}
下面是一个变量互换值的案例
#include <stdio.h>
void changeAction(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int a = 100;
int b = 200;
changeAction(&a, &b);
printf("交换完成后的效果: %d, %d\n", a, b);
return 0;
}