考虑一个自定义的C数据类型:
typedef struct myData { int a; int b; } myData;
我们可以定义一个指向包含myData元素的数组的指针,如下所示:
myData* pData;
当我们访问pData时,我们实际上访问了一个指向myData结构的指针。对于数组元素,我们可以使用pData [index]语法,其中index是一个整数,指定数组元素的位置。然后对于特定元素的成员,我们可以使用指向结构的指针的箭头运算符(->):
pData[index].a; pData[index].b;
在C语言中,我们可以使用*(星号)运算符进行解引用。这意味着我们可以使用指向结构体指针的指针来访问结构体的成员。例如:
myData** ppData; (*ppData)->a; (*ppData)->b;
这与对于*pData[index]的访问相同的访问结构体成员的方式。
为了更好地理解,以下是一个简单的示例程序,它创建一个包含两个myData元素的数组,并打印每个元素的值:
#include
typedef struct myData { int a; int b; } myData;
int main() {
// create an array of myData elements
myData dataArr[2] = {
{10, 20},
{30, 40}
};
// create a pointer to the array
myData* pData = dataArr;
int i;
// print the values of each element in the array
for (i = 0; i < 2; i++) {
printf("dataArr[%d]: a=%d, b=%d\n", i, pData[i].a, pData[i].b);
}
return 0;
}
输出为:
dataArr[0]: a=10, b=
上一篇:不理解重复线性渐变的颜色停止点
下一篇:不理解zip(*)如何解压数据。