我正在學習C++中的類,所以我嘗試了不同的東西來習慣這些類。在這裏,我想一個指針傳遞給一個類的函數:在C++中傳遞一個類函數的指針
class Pointerss{
int size;
public:
Pointerss(int);
void f();
int *a;
};
Pointerss::Pointerss(int siz){
size = siz;
}
void Pointerss::f(){
cout<<"Size is:"<<size<<"\n";
for (int i=0; i<size; ++i) {
cout<<"a is:"<<a[i]<<"\n";
}
}
int main() {
int size = 5;
Pointerss dd (size);
Pointerss * p = new Pointerss(size);
p[0]=1; p[1]=2; p[2]=3; p[3]=4; p[4]=5;
p->a;
dd.f();
return 0;
}
因此,「大小」由構造函數,當「f()的」初始化被稱爲正確的數字印刷。但是,當我將「p」分配給「a」(「p-> a」)然後調用「f()」時,會打印一些隨機數。我的電腦打印:
Size is:5
a is:0
a is:0
a is:1
a is:0
a is:1606416856
Program ended with exit code: 0
「a」和「size」之間有什麼區別,我該怎麼做才能將指針傳遞給函數?
我可以看到至少3個不同的問題。 –
這將被關閉和刪除,但你需要閱讀一個初學者[C++書](http://stackoverflow.com/q/388242/96780),教你什麼「p-> a」(當然,不是任務)以及如何執行變量初始化和賦值。 –
'指針* p =新的指針(大小)'分配一個元素,而不是一個數組。所以'p [1] = 2'是無界限訪問,UB也是如此。 – Jarod42