- 函数参数为指针
本质就是拿内存地址直接操作,所有的变量(包括形参和指针变量)都指向同一个地址,对那个地址内的内容直接操作
#include <stdio.h>
void swap (int *a, int *b); // 指针作为参数
int main(){
int i = 20, j =10;
swap (&i, &j);
printf("i = %d, j = %d\n", i,j);
return 0;
}
void swap (int *a , int *b){
int buf;
buf = *a;
*a = *b;
*b = buf;
}
/************
void swap (int a, int b); //形参(一般变量)作为参数
int main(void){
int i =3, j= 5;
swap(i,j);
printf("i = %d, j = %d\n", i,j);
return 0;
}
void swap(int a , int b){ //根本不好使,因为相当于在变量a,b分别对应的地址进行操作,一点都没i,j的事
int buf;
buf = a;
a = b;
b = buf;
printf("a = %d, b = %d\n", a,b);
}
***********/
- 函数指针 + 返回值为地址 (还不知道具体用法)
#include <stdio.h>
int s;
int sum (int x, int y);
int main (){
//int *r = sum(10,9);
int r = sum(10,9);
//printf("10+9+%d", *r);
printf("10+9+%d", r);
}
//两种方式跑出来的结果没有区别。。。
//int * sum (int x, int y){
int sum (int x, int y){
s = x+y;
//return &S
return s;
}