Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C指针数组_C_Arrays_Pointers - Fatal编程技术网

C指针数组

C指针数组,c,arrays,pointers,C,Arrays,Pointers,从外部代码中,我收到一个结构: struct some_list { void *data; int length; }; 其中数据是指向*char数组的第一个元素的指针 现在当我收到struct时,我当然可以得到数组的长度,理论上知道指针的大小,我应该能够遍历所有指针,并使用printf打印字符串 当我尝试用以下代码打印它时,我得到了SEGFULT: struct some_list result = get_list(); printf("Array length: %d\

从外部代码中,我收到一个结构:

struct some_list {
    void *data;
    int length;
};
其中数据是指向
*char
数组的第一个元素的指针

现在当我收到struct时,我当然可以得到数组的长度,理论上知道指针的大小,我应该能够遍历所有指针,并使用
printf
打印字符串

当我尝试用以下代码打印它时,我得到了SEGFULT:

struct some_list result = get_list();
printf("Array length: %d\n", result.length);
int j;
for(j=0;j<result.length;j++){
    printf("%d's element in array is: %s\n", j+1, (((char *)result.data)[j]));
}
struct some_list result=get_list();
printf(“数组长度:%d\n”,result.length);
int j;

对于(j=0;j如果
data
确实是指向
char*
数组的第一个元素的指针,则需要执行以下操作:

char **p = result.data;
int j;
for(j=0; j<result.length; j++){
    printf("%d's element in array is: %s\n", j+1, p[j]);
}
char**p=result.data;
int j;

对于(j=0;jIS它是“垃圾邮件标签”的一天?C和C++是不同的语言。好的,对不起,C++在推荐的标签中弹出。为什么<代码>数据< /代码>是代码>空隙*>代码>而不是<代码> char */COD>?没有“推荐标签”。!仅字符匹配。您是否在短消息中添加所有显示的单词?并提供一个。无需使用
void*
通常是个坏主意。@如果不是我选择在那里使用void,我是从另一个代码中获得它的,我只有.h而没有其他内容。只需将
((char*)result.data)[j])
替换为
((char char**)result.data)[j])
也可以。他们的做法更干净、更好……:)