背景用C基本封裝
- 寫庫兩種功能
- 處理陣列
- 處理陣列炭
- 此數據結構由被訪問項目內環
形勢
我試圖封裝與它的初始化的一個步驟的數組聲明將相關代碼放在一起。
我知道我需要傳遞一個數組指針給每個函數,並想知道性能。
版本1:
#include <stdio.h>
typedef struct char_array {
unsigned char uchar;
char achar;
} char_array;
#define CA_SIZE 1000000
char_array *ptr_array_one;
char_array *ptr_array_two;
main() {
char_array_init(ptr_array_one);
char_array_search(ptr_array_one);
char_array_init(ptr_array_two);
// etc.
}
char_array_init(struct char_array *ptr_array) {
static char_array ptr_array[CA_SIZE];
ptr_array[0].uchar= 'a';
ptr_array[5].uchar= 'b';
printf("%c\n\n", ptr_array[0].uchar);
}
char_array_search(struct char_array *ptr_array){
printf("%c\n\n", ptr_array[5].uchar);
}
我也試過第2版:
#include <stdio.h>
typedef union char_array {
unsigned char uchar;
char achar;
} char_array;
#define CA_SIZE 1000000
char_array *ptr_array_one;
main() {
ptr_array_one = char_array_init(ptr_array_one);
}
union * char_array_init(union char_array ptr_array) {
static char_array char_array[CA_SIZE];
char_array[0].uchar= 'a';
char_array[5].uchar= 'b';
printf("%c\n\n", char_array[0].uchar);
return &char_array;
}
我不能得到這個編譯任。
問題
我要尋找一個解決方案,實現這種編碼的嘗試,通過這個code
啓發我試圖動態聲明兩個或多個靜態數組,一個指針(ptr_array_one,ptr_array_two ,...)來引用它們。
char_array_init()
- 聲明和每次調用
- 到陣列地址放入ptr_array_one,ptr_array_two,時間初始化一個不同的數組...
char_array_search()有意訪問一個特定的數組,因此接收一個char_array結構指針作爲參數。
此代碼是我嘗試隔離尋求的功能,而不是實際的內部循環。
此代碼不能成功編譯。這是我能想到的最好的。
我不明白你在問什麼,但也許這個鏈接將有所幫助:http:// stack overflow.com/questions/3965279/opaque-c-structs-how-should-they-be-declared – 2014-11-06 00:12:42
這沒有任何意義。爲什麼你將一個未初始化的指針傳遞給'char_array_init()',然後聲明一個永遠不會再使用的同名靜態數組?你說的這個「內部循環」是什麼?爲什麼你的任何函數都沒有返回類型?這不再是20世紀80年代了。爲什麼要定義一個名爲'char_array'的struct,其中只有一個'unsigned char',並且沒有數組?這一切都很神祕,不可能告訴你要問什麼。 – 2014-11-06 00:14:03
請注意,您從不爲'ptr_array_one'或'ptr_array_two'指定內存,因此任何嘗試使用它們都會導致未定義的行爲(通常是崩潰)。 – 2014-11-06 00:48:07