1樓:黃邦勇帥哥哥
第1題:
people *pp;
pp->name="zhangsam"; //這樣肯定錯誤,結構體型別指標變數pp未初始化,也就是說這時結構體型別的指標變數pp沒有指向任何記憶體地址,你就使用他了,肯定錯誤。
people *pp1= new people; //new表示為指標pp1動態分配一個記憶體地址。
pp1->name="zhangsam"; //這裡不會出錯,建設你把pp改個名字,就改為pp1吧,不然會變數名相同而出錯。
delete pp1;
第2題:
int *height;//提示未初始化很正常,因為你這裡定義的是int型變數指標,而你在下一句卻給這個指標賦予一個字串常量地址,很明顯型別不皮配,這個指標所以賦值根本就不成功,當然不會初始化。
//height="168"; //這是錯誤的
int a=1;
height=&a; // 修改為這樣就行了。
第3題:
string abc;
char *bbc;
abc=bbc;//若兩個變數都沒有值的話,不報錯是不可能的。
你可能要問的是下面這種情況
string abc="kkk";
char *bbc="eee";
abc=bbc; //原因很簡單,因為在c++中string是一個類,注意是一個類,也就是string是使用class這樣來建立的,因此在string類中是過載了賦值運算子=的,因此這條語句就不會有錯,有可能過載的賦值運算子的形參就是char *型別的,具體內容就參看c++中string類的原檔案吧。
第4題:
char *tmp=&"hello world!"; //咋可能沒有用處,你這樣是100%錯誤的,如果編譯器不報錯,說明你的編譯器有毛病。
char tmp=&"hello world!"; //這樣正確,修改為陣列
char (*tmp)[13]=&"hello world!";//這樣也正確,修改為陣列指標。
分析:&"hello world!";
首先"hello world!"在進行初始化時代表的是這個字串的地址,我們平時所說的地址並不是這整個字串的地址,而是指的他的第一個字母h的地址,而再對"hello world!"取一次地址,就表示這個地址代表的是擁有整個13個字元(包括最後的結束符)的字串的地址,這時這個地址相當於是一個擁有13個元素的一維陣列的地址,注意是整個一維陣列的地址而不是陣列中第一個元素的地址,因此要接收&"hello world!
";這樣的地址,那麼指標必須是一個指向擁有13個元素的一維陣列的地址的指標,即陣列指標。或者乾脆定義一個有13個元素的一維陣列來容納這13個元素也可以。
第5題:
用char *有用char*的好處,用string有string的好處,但要記住的是,在使用string時,string是c++中的一個類,他和普通的類沒啥區別,也就是說string類有他的成員函式,成員變數,還有他過載的操作符函式,使用string s;這樣的話句建立的是一個string類的物件,這個物件可以呼叫string類中的成員變數,成員函式,過載的成員操作符(當然要公有的才行)
2樓:極天異雲
1.pp->name="zhangsam"//這樣會崩潰 因為沒有初始化
pp->name="zhangsam"//出現完全不一樣的崩潰方式,為何
這裡是因為string沒有初始化過(作為struct的成員變數不會自動呼叫建構函式),就直接呼叫了=運算子函式當然出錯。
2.未初始化應該只是一個警告,不必理會。
3.這裡和第一題相反,已經初始化過了,所以再次賦值有效。
4.&確實可有可無。
5.c++用char *也很多,有些地方不適合傳入string, 尤其是和系統api相關的呼叫必須試用char *.
3樓:匿名使用者
1:先說結構體
typedef structpeople;
people *pp;
pp->name="zhangsam"//這樣會崩潰//pp是一個結構的指標,並沒有實體的物件,所以結構裡的所有陣列也沒有實體化.自然呼叫會漰
people *pp= new people;
pp->name="zhangsam"//出現完全不一樣的崩潰方式,為何//這樣應該是不會崩潰的,不過這句好像後面少了個分號
delete pp;
2:int *height;//提示未初始化,是否所有定義都應該初始為null?//所有指標在申請時如果沒有初始化指向一個地址,最好將其設定為null
height="168";
3:string abc;
char *bbc;
abc=bbc;//為何不報錯?//因為string字串返回的是字串首個下標的地址.
4:char *tmp=&"hello world!";//這是不是很搞笑,&是否無關緊要//是無關緊要,因為這裡的字串是一個放在文字常量區的常量字串,他返回一個首下標地址,而不是一個指標,所以不可能再向下取址
5:c++裡用char *多嗎,我個人喜歡string,總感覺char *是c裡的內容//不少,char*還是很有用的,不過string確實很方便
時間太久沒接觸c++了忘差不多了,以前也是一隻半解,期待高手解答
4樓:傲月
像這種學習基礎知識的問題,在網上以提問的方式,往往會因為各種限制導致回答不全面,從而導致你的理解不全面或者不透徹,對於你以後的學習可能會造成不良影響,建議你看相關書籍,推薦c++ primer ,c++學習經典,會幫助你掌握好的
你是如何鞏固基礎知識的
多複習一下,多翻一下書,閒著沒事的時候就看書。 達 多記多背,多看基礎知識,對於學習來說是非常重要的,只有掌握好基礎知識才能學習更高深的知識,平要努力,多花費一點時間 0920滅韓橙疚 基礎知識是非常重要的,因為他是一個打擊的東西,平時要多花點時間,每天睡前吃完飯吃完後之後在路上的時候都可以拿出來看...
計算機基礎試題,計算機基礎知識試題及答案
計算機的應用領域主要有 1.科學計算 或數值計算 2.資料處理 或資訊處理 3.輔助技術 或計算機輔助設計與製造 4.過程控制 或實時控制 5.人工智慧 或智慧模擬 6.網路應用 噢噢黃大明 如何利用計算機系統進行輔助決策 來了劉 所有行業?沒電腦什麼都不行啊 計算機基礎知識試題及答案 文庫精選 內...
《公共基礎知識與能力素質》如何複習
水漫 公共基礎知識與能力素質 在題目型別上其實和 行測 與 申論 差不多,只不過是放在了一套卷子裡,題量也要少很多,包括單選 多選 公文改錯 材料分析等等,有時候還有填空題,這類教材像中公 華圖之類的教育機構應該是能買的到的,你截圖的這個就是公共基礎知識相關的內容,類似於 行測 的常識那一部分,你有...