我沒想到能夠增加指向結構內存塊中結構的指針。但它似乎工作。有沒有這種情況不起作用?如果我創建了一個「列表」的結構,那麼我應該始終能夠增加指向它們的指針,C會計算出要移動多少個字節?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;
}
究竟是什麼問題,你看到它的工作原理是正確的? –
是的,我只是想確保我沒有失去任何東西,我理解它。 –
您使用「*用戶++」表達式的任何特定原因? '*'是多餘的(它只是提及'++'的結果)。這也令人困惑,因爲看起來你試圖增加'*用戶'而不是'用戶'本身。 –