該程序的目標是立即設置2D陣列的每個數組變量,在函數內初始化2D數組,通過指針調用。分段錯誤
char mass_data_shift [9] [9];等於'T'。整體上應該等於100Ts。
這是通過調用這個二維數組地址作爲參數的void函數完成的。用指針調用它然後在循環中初始化。
在循環內部是被2D陣列應被設置爲T.
* mass_data [mass_data_counter] [mass_data_counter_two] = 'T';
但是.....程序結果:
- (最常見)分段錯誤試圖初始化* mass_data [4] [2]
- (有時候)一後程序成功運行(?)後出現分段錯誤。
- (有時)程序成功運行。
意思是程序在某處寫出界限。在程序運行時沒有分段錯誤和/或修復其他錯誤,任何幫助都將受到讚賞。
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
void mass_data_define(char (*mass_data)[9][9]){
int mass_data_counter;
int mass_data_counter_two = 0;
for (mass_data_counter=0;mass_data_counter<9;mass_data_counter++){
do {
std::cout << "|Array #1 " << mass_data_counter
<< " ::: |Array #2 " << mass_data_counter_two
<< std::endl;
*mass_data[mass_data_counter][mass_data_counter_two] = 'T';
std::cout << *mass_data[mass_data_counter][mass_data_counter_two];
mass_data_counter_two++;
std::cout << "---------End of Counter 2 Init Code----------" << std::endl;
} while (mass_data_counter_two < 9);
mass_data_counter_two = 0;
}
}
int main()
{
char mass_data_shift[9][9];
mass_data_define(&mass_data_shift);
std::cout << "-END-" << std::endl;
return 0;
}
最終編輯:主要原因是由下面的szym解決。對於空格和丟失的iostream感到抱歉,當我發佈帖子時,這是一個格式問題。還改變了循環以適應數組長度,如下所示。
您最多隻能有81個空格。 N的數組被索引爲0..N-1。在我看來,你認爲數組的大小是N + 1,因爲你說你的9x9數組有100個元素。它只能保持81. –
看起來像從0到9循環。你的數組只支持0到8。 –
好的,在我將循環更改爲0-8而不是0-9之後,仍然出現了分段錯誤。想法? –