背景用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