在函数声明中将指针声明为参数的3种方法是什么?

时间:2012-10-22 00:03:25

标签: c

我发现并使用了这种方法:

void PrintString(char *String_Ptr)
{
    //Print String
}

我找不到任何其他方法来将指针声明为函数声明中的参数。

我被引导相信还有其他方法可以从家庭作业问题中做同样的事情。

1 个答案:

答案 0 :(得分:1)

除了问题中提到的其他可能性之外。

以下内容完全等同于问题中的版本,尽管欺骗性语法表明String_Ptr是一个数组。它不是,它是一个指针:

void PrintString(char String_Ptr[])
{
    printf("%s\n", String_Ptr);
}

如果您知道要传递给PrintString()的字符数组(例如10个字符)的长度,您还可以将指针传递给这样的数组:

void PrintArray10(char (*Array_Ptr)[10])
{
    printf("%s\n", *Array_Ptr); // assuming the array is '\0'-terminated
}

int main(void)
{
    char a[10] = "Blah!";
    PrintString(a); // first 2 methods
    PrintArray10(&a); // 3rd method
    return 0;
}

您还可以使用typedef隐藏指针:

typedef char* pchar;

void PrintString(pchar String_Ptr)
{
    printf("%s\n", String_Ptr);
}

typedef char (*pchararr10)[10];

void PrintArray10(pchararr10 Array_Ptr)
{
    printf("%s\n", *Array_Ptr); // assuming the array is '\0'-terminated
}