c - 对数组变量的引用是什么类型?

标签 c pointers reference

我有以下代码:

/*
 * Pointer to a function that reads a codesegment
 */
typedef bool (*BRCS)(void *, uint32, uint64 *, uint64 *, const char **, const char **);
BRCS get_prog_id;

/*
 * 'get_prog_id' is loaded from a dynamic library
 */

uint64 start_o;
uint64 length_o;
char prog_id[256];
char err[256];

get_prog_id(NULL, 0, &start_o, &length_o, &prog_id, &err);

当我运行我的编译器时,我收到以下警告:

passing argument 5 of get_prog_id from incompatible pointer type    
passing argument 6 of get_prog_id from incompatible pointer type    

因此,它提示我的最后两个参数没有 char **

我很困惑。我的理解是,表示 TYPES 数组的变量等同于指向 TYPE 的指针。因此,应用 & 运算符会给您一个指向 TYPE 的指针。

我在这里错过了什么?

最佳答案

这里有两个问题:

(1)

&prog_id的类型不是char *,而是char (*)[256];即指向长度为 256 的字符数组的指针。

(2)

即使您可以获得 char **(例如 char *prog_id = malloc(256); &prog_id),char ** const char ** 兼容,原因有些模糊。最好的解释可能在这里:http://c-faq.com/ansi/constmismatch.html .

关于c - 对数组变量的引用是什么类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4948474/

相关文章:

c - 如何使用 C 中的快捷方式跳过字符串中的所有第一个空格

Java - 通过方法重新引用数组

c++ - 基于指针的查询

PHP - 通过引用函数参数传递

reference - 为什么在 AppleScript 中,不能声明对处理程序本地变量的引用?

c++ - 内存分配是系统调用吗?

C、变量初始化

冲突的类型,当它们都为空时

无法访问数组指针 C 的索引

c++ - 使用默认构造函数引用成员变量初始化错误