當你有一個包含數組和數組長度的結構時,如何訪問數組的特定索引?如何訪問C中結構中索引處的元素?
我定義我的結構:
struct intqq {
int a[0];
int len;
};
那麼我將如何訪問一個特定元素數組中的結構?
當你有一個包含數組和數組長度的結構時,如何訪問數組的特定索引?如何訪問C中結構中索引處的元素?
我定義我的結構:
struct intqq {
int a[0];
int len;
};
那麼我將如何訪問一個特定元素數組中的結構?
處理這個問題的常規方法是保持數組和長度彼此分開,並將它們傳遞給任何需要它們的函數。這也使您可以自由地聲明具有靜態大小的數組或通過malloc動態地聲明數組。
對於此零長度數組的工作,您需要將該數組作爲該結構的last member
,而不是第一個。然後應該可以照常訪問索引。
https://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html
#include <stdio.h>
#include <stdlib.h>
int main()
{
typedef struct {
int x;
int y[];
} flex;
int len = 10;
flex *f1 = malloc(sizeof(flex) + sizeof(int) * len);
f1->x = len;
f1->y[0] = 1;
f1->y[1] = 2;
printf ("y[1] = %d\n", f1->y[1]);
}
你需要做的在C?使用STL在C++中更容易(也更安全)。 – tweej
是的,我正在處理C這個特定的問題 –
你需要把數組放在結構的末尾。 – user3386109