传值与传址

传值:改变的是形参的值,实参的值并未改变

函数分别有自己的存储空间

#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
}
posted @ 2023-01-30 15:02  原语  阅读(30)  评论(0)    收藏  举报