快速C问题在这里。我们最近一直在玩双,三,甚至四分球。我们虽然我们对事物的把握,直到我们遇到了这个问题...C - 通过函数调用迷路的双指针
char ***data;
data_generator(&data);
char **temp = data[0];
printf("printing temp[%d]: %s\n",0, temp[0]);
printf("printing temp[%d]: %s\n",1, temp[1]);
dosomething(temp);
int dosomething(char **array) {
printf("printing array[%d]: %s\n",0, array[0]);
printf("printing array[%d]: %s\n",1, array[1]);
......
}
int data_generator(char ****char_data) {
char *command1[2];
char *command2[2];
command1[0] = "right";
command1[1] = "left";
command2[0] = "up";
command2[1] = "down";
char **commandArray[2];
commandArray[0] = command1;
commandArray[1] = command2;
number_of_commands = 2;
if(number_of_commands > 1){
*char_data = commandArray;
}
return number_of_commands - 1;
}
而这种打印出...
printing temp[0]: right
printing temp[1]: left
Segmentation fault
貌似我对所发生的指针一些误解同时通过一个函数。有什么想法吗?
呃,char ***数据的大小是4字节(在一个32位机器上),你的代码假设它有点大...... – 2010-10-01 04:28:24
我没有看到任何分配... – 2010-10-01 04:32:32