關於結構體變量爲什麼要使用new 增加空間的疑惑

#include <iostream>
#include <string>       
using namespace std;
struct Student             //聲明結構體類型Student
{ string name;
int num;
char sex;
};
int main()
{ Student *p;            //定義指向結構體類型Student的數據的指針變量
p=new Student;         //用new運算符開闢一個存放Student型數據的空間
p->name="Wang Fun";    //向結構體變量的成員賦值
p->num=10123;
p->sex='m';
cout<<p->name<<endl<<p->num<<endl<<p->sex<<endl; //輸出各成員的值
delete p;          //撤銷該空間
return 0;
}
//使用Student 後面不是指針的變量,或者用指針指向Student類型的變量然後輸出不是也不需要使用new增加空間的嗎?
爲什麼直接使用指針需要使用new增加空間,並且就是沒有p=new Student;  這句的話,程序就會出錯

這個是爲什麼,爲什麼其他類型的不需要而指針需要使用Student增加空間,



Student a 在聲明的時候就自動開闢空間了
而Student *P他沒有自動開闢所以
需要使用p=new Student這句開闢空間
剛剛一高手說的,我回復這樣也是爲了以後有人遇到這問題的時候
能夠參考一下我的
哈哈
這是你對象的命名方式有關的,如果你直接寫 Student a,那樣是會直接開闢空間的,
而指針不會這樣
所以要用NEW 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章