Jic*_*hao 8 c c++ pointers reference
#include <stdio.h>
#include <stdlib.h>
void
getstr(char *&retstr)
{
char *tmp = (char *)malloc(25);
strcpy(tmp, "hello,world");
retstr = tmp;
}
int
main(void)
{
char *retstr;
getstr(retstr);
printf("%s\n", retstr);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
gcc不会编译这个文件,但添加后#include <cstring>我可以使用g ++来编译这个源文件.
问题是:C编程语言是否支持通过引用传递指针参数?如果没有,为什么?
谢谢.
Boj*_*nik 20
引用是C++的一个特性,而C只支持指针.要让函数修改给定指针的值,请将指针传递给指针:
void getstr(char ** retstr)
{
char *tmp = (char *)malloc(25);
strcpy(tmp, "hello,world");
*retstr = tmp;
}
int main(void)
{
char *retstr;
getstr(&retstr);
printf("%s\n", retstr);
// Don't forget to free the malloc'd memory
free(retstr);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
试试这个:
void
getstr(char **retstr)
{
char *tmp = (char *)malloc(25);
strcpy(tmp, "hello,world");
*retstr = tmp;
}
int
main(void)
{
char *retstr;
getstr(&retstr);
printf("%s\n", retstr);
return 0;
}
Run Code Online (Sandbox Code Playgroud)