c - 数组访问,指针混淆

标签 c pointers

我有一些继承的代码和一个将字符数组作为参数的函数。

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/

相关文章:

c - 使用 C 在文本数组中插入和删除空格

c - 从文件中逐行读取整数,以空格分隔

c - 我们如何在 LLVM 中提取指针类型

c - 如何判断一个变量是二维数组、指针数组还是 char 的双指针?

c - C中的函数帮助

c++ - 指针和自增运算符

c - 指针和打印问题

objective-c - 使用 open() 保证文件权限与使用 NSData 文件写入方法写入的文件的权限相同

C++继承类,将修改后的参数发送给父级的构造函数

pointers - 为什么我的自定义错误类型会导致特定模式的错误?