


下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、1. 什么是預(yù)編譯,何時需要預(yù)編譯:答案:、總是使用不經(jīng)常改動的大型代碼體。(好工程的回答,不是么:) )、程序由多個模塊組成,所有模塊都使用一組標(biāo)準(zhǔn)的包含文件和相同的編譯選項。在這種情況下,可以將所有 包含文件預(yù)編譯為一個預(yù)編譯頭。2. char * const pchar const * pconst char *p 上述三個有什么區(qū)別?答案:char * const p; /常量指針, const 修飾的是指針 p ,故 p 的值不可以修改char const * p ;/const 修飾的是 *p ,為指向常量的指針, 指向的常量值不可以改 const char *p ; /和 cha
2、r const *p3. 數(shù)組變量和指針的區(qū)別?cpp view plaincopy1.#include <iostream>2.using namespace std;3.4.int main( int argc, char const *argv)5.6.char str1 = "abc" ;7.char str2 = "abc" ;8.const char str3 = "abc" ;9.const char str4 = "abc" ;10.const char *str5 = "ab
3、c" ;11.const char *str6 = "abc" ;12.char *str7 = "abc" ;13.char *str8 = "abc" ;14.15.cout << ( str1 = str2 ) << endl;16.cout << ( str3 = str4 ) << endl;17.cout << ( str5 = str6 ) << endl;18.cout << ( str7 = str8 ) <<
4、endl;19.20.return 0;21.結(jié)果是: 0 0 1 1 str1,str2,str3,str4 是數(shù)組變量,它們有各自的內(nèi)存空間;而 str5,str6,str7,str8 是指針,它們指向相同的常量區(qū)域。4. 以下代碼中的兩個 sizeof 用法有問題嗎?答案是有問題的,只要長度超過指針的長度就不可以了cpp view plaincopy1.#include <iostream>2.using namespacestd;3.4.voidUpperCase(char str )/ 將 str 中的小寫字母轉(zhuǎn)換成大寫字母5.6.for ( size_ti=0; i &
5、lt;sizeof(str)/ sizeof (str0); +i )7.if ( 'a'<=stri && stri <='z' )8.stri -= ('a' -'A');9.10.11.intmain( int argc, char const*argv)12.13.char str ="aBcDeeeee" ;14.cout << "str字符長度為 : "<< sizeof (str)/ sizeof (str0) <<
6、; endl;15.UpperCase( str );16.cout << str << endl;17.return 0;18.答案:str 字符長度為 : 10ABCDEEEEe函數(shù)內(nèi)的 sizeof 有問題。根據(jù)語法, sizeof 如用于數(shù)組,只能測出靜態(tài)數(shù)組的大小,無法檢測動態(tài)分配的或外部 數(shù)組大小。函數(shù)外的 str 是一個靜態(tài)定義的數(shù)組,因此其大小為6,因為還有 '0' ,函數(shù)內(nèi)的 str 實際只是一個指向字符串的指針, 沒有任何額外的與數(shù)組相關(guān)的信息, 因此 sizeof 作用于上只將其當(dāng)指針看, 一個指針為 4 個字節(jié), 因此返回 4 。
7、PS :我的是 64 位的 CPU ,所以指針是 8 位5. 一個 32 位的機(jī)器 ,該機(jī)器的指針是多少位答案:指針是多少位只要看地址總線的位數(shù)就行了。 80386 以后的機(jī)子都是 32 的數(shù)據(jù)總線。所以指針的位數(shù)就是 4 個 字節(jié)了。話說, 64 位機(jī)子( CPU&OS )的指針同樣是 32 位的,即 4 個字節(jié),所以指針不是看 CPU 的字長,而 是地址總線的位數(shù)6. 關(guān)于數(shù)組指針cpp view plaincopy1. #include "stdio.h"2. int main( int argc, char const *argv)3. 4. int a5=
8、1,2,3,4,5;5. int *ptr=( int *)(&a+1);6. printf( "%d,%d n" ,*(a+1),*(ptr-1);7. return 0;8. 答案: 2, 5*(a+1 )就是 a1 , *(ptr-1) 就是 a4,執(zhí)行結(jié)果是 2,5。 &a+1 不是首地址 +1 ,系統(tǒng)會認(rèn)為加一個 a 數(shù)組的偏移, 是偏移了一個數(shù)組的大小(本例是5 個 int ) int *ptr=(int *)(&a+1); 則 ptr 實際是 &(a5), 也就是 a+5 原因如下:&a是數(shù)組指針,其類型為 int (*
9、)5; 而指針加 1要根據(jù)指針類型加上一定的值,不同類型的指針 +1 之后增加的 大小不同 a 是長度為 5 的 int 數(shù)組指針, 所以要加 5*sizeof(int) 所以 ptr 實際是 a5 但是 prt 與 (&a+1) 類型是不 一樣的 (這點很重要 ) 所以 prt-1 只會減去 sizeof(int*) a,&a 的地址是一樣的,但意思不一樣, a 是數(shù)組首地址,也 就是 a0 的地址, &a 是對象(數(shù)組)首地址, a+1 是數(shù)組下一元素的地址,即 a1,&a+1 是下一個對象的地址, 即 a5.7. 請問以下代碼有什么問題:cpp view
10、plaincopy1.#include "stdio.h"2.#include "string.h"3.int main()4.5.char a;6.char *str=&a;7.strcpy(str, "hello" );8.printf(str);9.10.return 0;11.答案:沒有為 str 分配內(nèi)存空間,將會發(fā)生異常問題出在將一個字符串復(fù)制進(jìn)一個字符變量指針?biāo)傅刂?。雖然 可以正確輸出結(jié)果,但因為越界進(jìn)行內(nèi)在讀寫而導(dǎo)致程序崩潰。即“hello將”會寫入到 &a 以及之后的 5 個(包括NUL ),就是說越界了,可能某個時候就爆發(fā)錯誤了8. char* s="AAA" printf("%s",s); s0='B' printf("%s",s); 有什么錯?答案: "AAA" 是字符串常量。 s 是指針, 指向這個字符串常量, 所以聲明 s 的時候就有問題。 cosnt char* s="AAA" 然后又因為是常量,所以對是s0的賦值操作是不合法的。即不能對常量進(jìn)行
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 河北軟件職業(yè)技術(shù)學(xué)院《建筑數(shù)字技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025年陜西省建筑安全員考試題庫及答案
- 山東城市建設(shè)職業(yè)學(xué)院《建筑工程概預(yù)算實驗》2023-2024學(xué)年第二學(xué)期期末試卷
- 四川工商學(xué)院《生態(tài)環(huán)境學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 南京工業(yè)大學(xué)浦江學(xué)院《用戶研究與設(shè)計定義》2023-2024學(xué)年第二學(xué)期期末試卷
- 陽江職業(yè)技術(shù)學(xué)院《材料形變加工新技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 青島濱海學(xué)院《設(shè)備安裝》2023-2024學(xué)年第二學(xué)期期末試卷
- 新鄉(xiāng)學(xué)院《建筑設(shè)備》2023-2024學(xué)年第二學(xué)期期末試卷
- 新疆職業(yè)大學(xué)《有機(jī)化學(xué)理論教學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 徐州醫(yī)科大學(xué)《數(shù)字化版面設(shè)計ndesgn》2023-2024學(xué)年第二學(xué)期期末試卷
- 山西省2024年中考物理試題(含答案)
- 電子商務(wù)平臺供貨方案及風(fēng)險控制措施
- 文獻(xiàn)檢索與利用
- 2學(xué)會寬容 第1課時(說課稿)-2023-2024學(xué)年道德與法治六年級下冊統(tǒng)編版
- 公共圖書館情緒療愈空間設(shè)計研究:動因、現(xiàn)狀與實現(xiàn)機(jī)制
- 靜脈治療??谱o(hù)士培訓(xùn)
- 【課件】Unit+6+section+B+1a~2b+課件人教版七年級英語上冊
- 牛買賣合同范本
- 釘釘操作指南培訓(xùn)教育課件
- 人音版九下級下冊音樂 5.2.2報花名 教案
- 金庸人物課件
評論
0/150
提交評論