快速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