将指针返回函数的结果指针转换为引用,可作为参数传递给另一个函数

时间:2017-04-26 23:08:06

标签: c

具有以下内容:

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?

2 个答案:

答案 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而不是指针