本文主要是介绍c语言指针做函数参数,使用指针地址(二级指针)在被调函数中修改主调函数的指针。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>typedef struct {char *prive;int data;
} T_Str;void copy_mem( char *dst)
{strcpy(dst, "aa");
}void copy_remalloc(char *dst){dst=strdup("aaa");
}void copy_remalloc_by_pointer(char **dst){*dst=strdup("aaa");
}void dump_str(T_Str str){printf("----------->\n");printf("str.data:=%d \n", str.data);if(str.prive){printf("str.prive:=%s \n", str.prive);}else{printf("str.prive has no data \n");}printf("<-----------\n");
}#define PRIVE_SIZE 16
void test(){T_Str str;memset(&str, 0, sizeof(T_Str));str.prive=NULL;str.prive=(char *)malloc(sizeof(char)*PRIVE_SIZE);copy_mem(str.prive);dump_str(str);memset(&str, 0, sizeof(T_Str));str.prive=NULL;copy_remalloc(str.prive);dump_str(str);memset(&str, 0, sizeof(T_Str));str.prive=NULL;copy_remalloc_by_pointer(&str.prive);dump_str(str);
}int main(int argc, char *argv[]){test();return 0;}
2.运行结果
----------->
str.data:=0
str.prive:=aa
<-----------
----------->
str.data:=0
str.prive has no data
<-----------
----------->
str.data:=0
str.prive:=aaa
<-----------
3.总结
其实很简单,要想给一个指针重新赋值,使它指向新的内存并修改,传入地址即可。和普通的二级指针一样,结构体同样符合c的规范。
这篇关于c语言指针做函数参数,使用指针地址(二级指针)在被调函数中修改主调函数的指针。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!