我有一些继承的代码和一个将字符数组作为参数的函数。
typedef char myString[256];
void MyFunc(myString param)
{
int i;
for (i = 0; i < 256; i++)
{
if (param[i] ....
我想让它更有效率并传递一个指向 char 数组的指针:
void MyFunc(myString *param)
{
int i;
for (i = 0; i < 256; i++)
{
if (*param[i] <========= Thsi is wrong
当我尝试引用数组元素时,我得到了错误的值,所以显然我的指针取消引用有问题。我已经有一段时间没有用 C 编写代码了,所以我看不出明显的错误。
有人可以指出吗?
最佳答案
您可能不想通过指针传递它;当您在参数中使用该类型时,它无论如何都会变成一个指针,并且二级间接寻址的效率较低。
如果您确实使用“指向数组的指针”表示法,那么您需要括号来获得正确的优先级:
if ((*param)[i] ...)
...
关于c - 数组访问,指针混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14250475/