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])
也可以。他们的做法更干净、更好……:)