C指针/数组语法

标签 c arrays pointers syntax

我知道下面两件事在c中是一样的(因为偏移量和数组)

someArray[i]     //ith element of someArray
*(someArray + i) //ith element of someArray

但是对于结构,相同的语法似乎不太适用...

someStruct[i]->*(someArray + j)   //compiler error
*(someStruct + i)->someArray[j]   //Also compiler error

有没有办法使用指针/偏移量表示法(第二种)来表示结构的元素?

最佳答案

假设 someStruct 是一个结构体数组,而 someArray 是数组类型的结构体成员,那么它们中的任何一个都是有效的:

*(someStruct[i].someArray + j)

(*(someStruct + i)).someArray[j]

参见例如http://ideone.com/UtLN2 .

关于C指针/数组语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10986714/

相关文章:

c - 抑制 lint 消息 9007

c - 对 make (Linux) 和 nmake (Windows) 使用相同的 makefile

php - 将 PHP 数组字符串转换为数组

C++ 带指针的动态二维数组(矩阵)

c - OS X 中的 POSIX API 是否需要比 Cocoa 更高的权限

c - OpenMP、多线程或多处理 (C)?

ruby - 为什么在带有 block 的数组上调用 zip 总是返回 nil

java - 打印一个 int 数组

c++ - 改变这是什么

c++ - 指针和数组