具有下列特征:
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()
必须返回一个字符*,但返回时正在取消对它的引用,这将获得一个字符。Furtermore
function1()
也不返回值。