使用指针做形参来解决函数的副本机制

Posted linux-bfbdxj520

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用指针做形参来解决函数的副本机制相关的知识,希望对你有一定的参考价值。

/*在函数里面改变一个外部变量,就需要变量的地址

    如果是数据,需要指向数据的指针存储数据的地址

如果是指针,就需要指向指针的指针存储指针的地址

//二级指针一般用于改变一个字符串指针的指向,指向不同的字符串

*/

 #include<stdio.h>

#include<stdlib.h>

char str1[20] = "notepad";
char str2[20] = "tasklist";
/*
   把这两个字符数组作为全局变量

*/

// 函数有副本机制,形式参数会开辟内存,新建一个变量,容纳传递过来的实际参数的值

void change(char** _p2)
{

/*
现在我需要写一个函数能够更改 p变量的值,该怎么做呢???

我们要更改一个变量,需要该变量的地址,如果变量是指针就需要二级指针

 更改一个变量的值:  只有通过地址的形式访问该变量然后对其进行修改重写

因此,我们可以把传递过来该变量的地址即:该变量的指针

*/

*_p2 = str1;  //改变指针的指向

 }

void main()

{

char *p = str1;    //指针指向字符串
/*
当创建一个指针指向一个字符串时,*p 就是字符串的内容

*/

 printf(" %p ", &p);   //打印指针地址

 char ** p2 = &p;

change(p2);

 system(p);

getchar();

}

以上是关于使用指针做形参来解决函数的副本机制的主要内容,如果未能解决你的问题,请参考以下文章

C 语言数组 ( 多维数组做函数形参退化为指针过程 | int array[2][3] -> int array[][3] -> int (*array)[3] )

C++,const型指针变量做形参实参变量的问题

关于C语言结构体指针做函数形参的问题

关于函数形参

c语言中指针作为实参使用SWAP函数的问题。

c语言中,函数的形参啥时候必须是指针