具有以下内容:
char* function1(char* parameter)
{
printf("%c",*parameter);
}
char* function2(char* sequence)
{
return *sequence;
}
int main()
{
char* sequence = malloc(1);
*sequence = 'a';
function1(function2(sequence));
}
程序运行正确地给出了分段错误,因为function2的调用返回一个指针,而function1调用需要一个引用由其指针参数指向。
有没有办法将函数2返回的指针作为参数传递给function1?
答案 0 :(得分:2)
我想你想做这样的事情:
char* function1(char* parameter)
{
printf("%c", *parameter);
return parameter;
}
char* function2(char* sequence)
{
return sequence;
}
int main()
{
char* sequence = (char*)malloc(1);
*sequence = 'a';
function1(function2(sequence));
}
您还可以使用编译器发现一些错误。
function2()
必须返回一个char *,但是当你返回时你正在取消引用它,它会让你获得一个char。
Furtermore function1()
也没有返回值。
答案 1 :(得分:1)
您的function2返回的值不是地址,但是function1将该值视为地址并尝试访问它。因此你得到了段错误。 function2应该返回指针但在你的情况下你返回* sequence而不是指针