我发现并理解了这种方法:
void PrintString(char *String_Ptr)
{
//Print String
}
我找不到任何其他方法将指针声明为函数声明中的参数。
我被引导相信还有其他方法可以从家庭作业问题中做同样的事情。
我发现并理解了这种方法:
void PrintString(char *String_Ptr)
{
//Print String
}
我找不到任何其他方法将指针声明为函数声明中的参数。
我被引导相信还有其他方法可以从家庭作业问题中做同样的事情。
除了问题中提到的之外,还有一些可能性。
以下内容与问题中的版本完全相同,尽管具有欺骗性的语法表明这String_Ptr
是一个数组。不是,它是一个指针:
void PrintString(char String_Ptr[])
{
printf("%s\n", String_Ptr);
}
如果您知道要传递给 的字符数组(例如 10 个字符)的长度PrintString()
,还可以将指针传递给这样的数组:
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
}