如何将字符指针引用传递给函数并获取受影响的值?

前端之家收集整理的这篇文章主要介绍了如何将字符指针引用传递给函数并获取受影响的值?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在这段代码中,我传递了一个字符指针引用到函数test
并在函数测试中我malloc大小并将数据写入该地址,然后我打印它并获得null值.
#include <stdio.h>
#include <stdlib.h> 

void test(char*);

int main()
{

 char *c=NULL ;


 test(c);
 printf("After test string is %s\n",c);
 return 0;
}



void test(char *a)
{
 a = (char*)malloc(sizeof(char) * 6);
 a = "test";
 printf("Inside test string is %s\n",a);
}

输出

Inside test string is test
After test string is (null)

解决方法

你不能只是传入指针.你需要传递指针的地址.试试这个:
void test(char**);


int main()
{

 char *c=NULL ;


 test(&c);
 printf("After test string is %s\n",c);

 free(c);   //  Don't forget to free it!

 return 0;
}



void test(char **a)
{
 *a = (char*)malloc(sizeof(char) * 6);
 strcpy(*a,"test");  //  Can't assign strings like that. You need to copy it.
 printf("Inside test string is %s\n",*a);
}

原因是指针是按值传递的.这意味着它被复制到函数中.然后使用malloc覆盖函数内的本地副本.

因此,为了解决这个问题,您需要传递指针的地址.

猜你在找的C&C++相关文章