我正在使用在類中聲明的指針數組指向另一個數組。當一個指針數組元素被初始化爲一個main中的值時,該值也被傳遞給它所指向的數組元素。下面的代碼顯示了這一點,它工作正常。但是,如果我初始化init類函數內的指針,我會得到一個段錯誤。另外,如果我嘗試從指針數組中訪問一個元素,而不是在main中初始化,我也會得到一個段錯誤。如何正確初始化類函數內的指針?
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
class testclass {
public:
double *Wgt;
double* *LWgt;
void init() {
Wgt = new double[26];
LWgt = new double*[26];
//segfault from here
*LWgt[5] = 22.34543;
}
};
int main() {
testclass *node;
node = new testclass[10];
for (int i = 0; i < 10; i++) {
node[i].init();
}
for (int i = 0; i < 5; i++) { //init_nconn here
node[i].LWgt[23] = &node[i + 5].Wgt[12];
}
node[6].Wgt[12] = 50.6987;
node[8].Wgt[12] = 0.999923;
cout << *node[1].LWgt[23] << *node[3].LWgt[23] << "--\n";
//No segfault
*node[1].LWgt[23] = 33.234;
cout << node[6].Wgt[12] << "---\n";
//No segfault here
cout << *node[1].LWgt[23] << "---\n";
//Segfault from here
cout << *node[3].LWgt[5] << "---\n";
}
有沒有辦法在類函數內初始化指針數組而不導致段錯誤?
請妥善縮進代碼。 –
你怎麼做,我只是用CTRL k。 – hbyte
您是否聽說過施工人員?你從哪裏學習這些東西? –