C 结构指针迭代

标签 c memory pointers struct iteration

我没想到能够在结构的内存块中递增指向结构的指针。但它似乎工作。有没有这不起作用的情况?如果我创建一个结构“列表”,那么我应该总是能够递增指向它们的指针,并且 C 会计算出要移动多少字节?

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

struct User {
    int id;
    char name[32];
    float net_worth;
};
typedef struct User User;


int main(int argc, char** argv) {
    User* u1 = (User*)malloc(sizeof(User));
    u1->id = 1;
    strcpy(u1->name, "Mike");
    u1->net_worth = 43.45;
    User* u2 = (User*)malloc(sizeof(User));
    u2->id = 2;
    strcpy(u2->name, "Pablo");
    u2->net_worth = -2.00;
    User* u3 = (User*)malloc(sizeof(User));
    u3->id = 3;
    strcpy(u3->name, "Frederick");
    u3->net_worth = 7329213.45;

    User** users = (User**)malloc(sizeof(User)*10);
    *users = u1;
    printf("%s\n", ((User*)(*users))->name);
    *users++;
    *users = u2;
    printf("%s\n", ((User*)(*users))->name);
    *users++;
    *users = u3;
    printf("%s\n", ((User*)(*users))->name);


    return 0;

}

最佳答案

这在很大程度上是设计使然。假设你有

User userArray[16];

您可以通过 userArray[1]*(userArray + 1) 访问第二个用户,或者获取指向第一个元素的指针并通过++

关于C 结构指针迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6631903/

相关文章:

c - c程序中的strcat不起作用

java - Used vs Max vs Size -Jvisualvm?

c - C 中 char* 的结尾

c - 通过c中的函数传递的二维数组

c - 如何从 printf 获取整数的空白输出

c - 如何找到数组的大小(从指向数组第一个元素的指针)?

iphone - 在C中跨步复制内存的最快方法?

performance - Tomcat内存信息

c - 查找堆栈缓冲区溢出

c - Swig 中 C 指针的访问器函数