具有下列特征:

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的调用需要一个指针参数指向的引用,因此程序运行正确地给出了一个分段错误。
当作为参数传递给function1时,是否有方法将从function2返回的指针强制转换为引用?

最佳答案

我想你应该这样做:

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()必须返回一个字符*,但返回时正在取消对它的引用,这将获得一个字符。
Furtermorefunction1()也不返回值。

09-04 16:15
查看更多