|
发表于 2004-12-15 11:12:41
|
显示全部楼层
回复: 一道c语言的改错题目,请大家考虑考虑
最初由 jeffshia 发表
#include<stdio.h>
#include<malloc.h>
void foo(int a,char *b)
{
b = (char *)malloc(64);
snprintf(b,"you are %d years old!\n",a);
}
int main(void)
{
char *f;
foo(23,f);
printf("%s\n",b);
}
从程序可知,作者本意为
void foo(int a, /* [out] */char *b)
但是考虑到指针的传递问题,应该为:
void foo(int a, char **b)
...
否则新分配的指针无法回传,回传得参数只是栈内引用(退出函数即被清除) |
|