C语言数组的地址传递和值传递

Python08

C语言数组的地址传递和值传递,第1张

1.值传递就不写了,顾名思义就是把当前的值传到下一个函数中,变量本身的没有发生任何变化

2.指针传递,把当前变量指针传到下一个函数,在另外函数里边修改指针的值会修改当前变量值

#include <stdio.h>

  void func(int *p){

                *p = 9

                return

    }

void swap(int *a, int *b){ //交换两个变量的值

        int temp = *a

        *a = *b

        *b = temp

}

int main(void){

            int a = 0

            func(&a)//要修改一个变量,把他的地址传过去

            printf("%d",a)//9

            int b = 3int c = 4

            swap(&b,&c)

            return 0

}

当传递的数,不止一个的时候,或者要改变参数值得时候返回实参的值得时候。就用传递地址。

例如:

getct(int

*a,int

*b)

{

printf("%d

%d",*a,*b)

}

mian()

{

int

x=5,y=3

int

*s,*z

s=&xz=&y

getct(s,z)

}

1、值传递:不管怎么传,原来的实参的值都不会改变。

地址传递,原来的实参的值可能被改变。

打个比方:

值传递就好象你告诉别人你的帐户里有多少钱 帐户里的钱不会改变。

地址传递就好象你告诉别人你的帐户密码 帐户里面的钱可以被改变。

2、例如:

#include<stdio.h>

point(char *pt)

main()

{char b[4]={'m','n','o','p'},*pt=b

point(pt)

printf("%c\n",*pt)

}

point(char *p)

{p+=3

*p='F'}//加上这一句就变了