传值与传址
传值:改变的是形参的值,实参的值并未改变
函数分别有自己的存储空间
#include <stdio.h>
void swap(int m,int n){
int t;
t=m;
m=n;
n=t;
}
int main(void)
{
int a=1,b=2;
swap(a,b);
printf("%d %d",a,b); //1 2
}
传址(形参变化影响实参)
共用一个存储空间,swap函数通过指针间接访问
#include <stdio.h>
void swap(int *m,int *n){
int t;
t=*m;
*m=*n;
*n=t;
}
int main(void)
{
int a=1,b=2,*p1,*p2;
p1=&a;
p2=&b;
swap(p1,p2);
printf("%d %d",a,b); //2 1
}
传址(形参变化不影响实参)
#include <stdio.h>
void swap(int *m,int *n){
int *t;
t=m;
m=n;
n=t;
}
int main(void)
{
int a=1,b=2,*p1,*p2;
p1=&a;
p2=&b;
swap(p1,p2);
printf("%d %d",a,b); //1 2
}
传址(数组名作参数)
#include <stdio.h>
#include <string.h>
void test(char b[]){ //char *b
strcpy(b,"world"); //字符串数组的二次赋值用strcpy
}
int main(void)
{
char a[10]="hello";
test(a);
printf("%s",a); //world
}
浙公网安备 33010602011771号