資料介紹
C,C++經(jīng)典問題,及面試筆試題
1?????? 編程基礎
1.1??? 基本概念
1.???????? 的理解:const char*, char const*, char*const的區(qū)別問題幾乎是C++面試中每次??? 都會有的題目。 事實上這個概念誰都有只是三種聲明方式非常相似很容易記混。 Bjarne在他的The C++ Programming Language里面給出過一個助記的方法: 把一個聲明從右向左讀。 const
char? * const cp; ( * 讀成 pointer to )
cp is a const pointer to char
const char * p;
p is a pointer to const char;
char const * p;
同上因為C++里面沒有const*的運算符,所以const只能屬于前面的類型。
2.???????? 指針c
int *p[n];-----指針數(shù)組,每個元素均為指向整型數(shù)據(jù)的指針。
int (*)p[n];------p為指向一維數(shù)組的指針,這個一維數(shù)組有n個整型數(shù)據(jù)。
int *p();----------函數(shù)帶回指針,指針指向返回的值。
int (*)p();------p為指向函數(shù)的指針。
3.???????? 數(shù)組越界問題
下面這個程序執(zhí)行后會有什么錯誤或者效果:
?#define MAX 255
int main()
{
??? unsigned char A[MAX],i;
??? for (i=0;i<=MAX;i++)
??????? A[i]=i;
}
解答:MAX=255,數(shù)組A的下標范圍為:0..MAX-1,這是其一,其二 當i循環(huán)到255時,循環(huán)內(nèi)執(zhí)行: A[255]=255;這句本身沒有問題,但是返回for (i=0;i<=MAX;i++)語句時,由于unsigned char的取值范圍在(0..255),i++以后i又為0了..無限循環(huán)下去.
注:char類型為一個字節(jié),取值范圍是[-128,127],unsigned char [0 ,255]
4.???????? 和strcpy 的根本區(qū)別?? C++:memset ,memcpy
#include "memory.h"
memset用來對一段內(nèi)存空間全部設置為某個字符,一般用在對定義的字符串進行初始化為‘ '或‘\0';例:char a[100];memset(a, '\0', sizeof(a));
memcpy用來做內(nèi)存拷貝,你可以拿它拷貝任何數(shù)據(jù)類型的對象,可以指定拷貝的數(shù)據(jù)長度;例:char a[100],b[50]; memcpy(b, a, sizeof(b));注意如用sizeof(a),會造成b的內(nèi)存地址溢出。
strcpy就只能拷貝字符串了,它遇到'\0'就結束拷貝;例:char a[100],b[50];strcpy(a,b);如用strcpy(b,a),要注意a中的字符串長度(第一個‘\0'之前)是否超過50位,如超過,則會造成b的內(nèi)存地址溢出。
strcpy
原型:extern char *strcpy(char *dest,char *src);
用法:#include
功能:把src所指由NULL結束的字符串復制到dest所指的數(shù)組中。
說明:src和dest所指內(nèi)存區(qū)域不可以重疊且dest必須有足夠的空間來容納src的字符串。
返回指向dest的指針。
memcpy
原型:extern void *memcpy(void *dest, void *src, unsigned int count);
用法:#include
功能:由src所指內(nèi)存區(qū)域復制count個字節(jié)到dest所指內(nèi)存區(qū)域。
說明:src和dest所指內(nèi)存區(qū)域不能重疊,函數(shù)返回指向dest的指針。
Memset
原型:extern void *memset(void *buffer, char c, int count);
用法:#include
功能:把buffer所指內(nèi)存區(qū)域的前count個字節(jié)設置成字符c。
說明:返回指向buffer的指針。
5.???????? 是干什么用的ASSERT()
ASSERT()是一個調(diào)試程序時經(jīng)常使用的宏,在程序運行時它計算括號內(nèi)的表達式,如果表達式為FALSE (0), 程序?qū)蟾驽e誤,并終止執(zhí)行。如果表達式不為0,則繼續(xù)執(zhí)行后面的語句。這個宏通常原來判斷程序中是否出現(xiàn)了明顯非法的數(shù)據(jù),如果出現(xiàn)了終止程序以免導致嚴重后果,同時也便于查找錯誤。例如,變量n在程序中不應該為0,如果為0可能導致錯誤,你可以這樣寫程序:
......
ASSERT( n != 0);
k = 10/ n;
......
ASSERT只有在Debug版本中才有效,如果編譯為Release版本則被忽略。
assert()的功能類似,它是ANSI C標準中規(guī)定的函數(shù),它與ASSERT的一個重要區(qū)別是可以用在Release版本中。
6.???????? ("pause");系統(tǒng)的暫停程序,按任意鍵繼續(xù),屏幕會打印,"按任意鍵繼續(xù)。。。。。" 省去了使用getchar();system
7.???????? 請問C++的類和C里面的struct有什么區(qū)別?
c++中的類具有成員保護功能,并且具有繼承,多態(tài)這類oo特點,而c里的struct沒有
8.???????? 請講一講析構函數(shù)和虛函數(shù)的用法和作用?
析構函數(shù)也是特殊的類成員函數(shù),它沒有返回類型,沒有參數(shù),不能隨意調(diào)用,也沒有重載。知識在類對象生命期結束的時候,由系統(tǒng)自動調(diào)用釋放在構造函數(shù)中分配的資源。這種在運行時,能依據(jù)其類型確認調(diào)用那個函數(shù)的能力稱為多態(tài)性,或稱遲后聯(lián)編。另:析構函數(shù)一般在對象撤消前做收尾工作,比如回收內(nèi)存等工作,虛擬函數(shù)的功能是使子類可以用同名的函數(shù)對父類函數(shù)進行重載,并且在調(diào)用時自動調(diào)用子類重載函數(shù),如果是純虛函數(shù),則純粹是為了在子類重載時有個統(tǒng)一的命名而已。
1?????? 編程基礎
1.1??? 基本概念
1.???????? 的理解:const char*, char const*, char*const的區(qū)別問題幾乎是C++面試中每次??? 都會有的題目。 事實上這個概念誰都有只是三種聲明方式非常相似很容易記混。 Bjarne在他的The C++ Programming Language里面給出過一個助記的方法: 把一個聲明從右向左讀。 const
char? * const cp; ( * 讀成 pointer to )
cp is a const pointer to char
const char * p;
p is a pointer to const char;
char const * p;
同上因為C++里面沒有const*的運算符,所以const只能屬于前面的類型。
2.???????? 指針c
int *p[n];-----指針數(shù)組,每個元素均為指向整型數(shù)據(jù)的指針。
int (*)p[n];------p為指向一維數(shù)組的指針,這個一維數(shù)組有n個整型數(shù)據(jù)。
int *p();----------函數(shù)帶回指針,指針指向返回的值。
int (*)p();------p為指向函數(shù)的指針。
3.???????? 數(shù)組越界問題
下面這個程序執(zhí)行后會有什么錯誤或者效果:
?#define MAX 255
int main()
{
??? unsigned char A[MAX],i;
??? for (i=0;i<=MAX;i++)
??????? A[i]=i;
}
解答:MAX=255,數(shù)組A的下標范圍為:0..MAX-1,這是其一,其二 當i循環(huán)到255時,循環(huán)內(nèi)執(zhí)行: A[255]=255;這句本身沒有問題,但是返回for (i=0;i<=MAX;i++)語句時,由于unsigned char的取值范圍在(0..255),i++以后i又為0了..無限循環(huán)下去.
注:char類型為一個字節(jié),取值范圍是[-128,127],unsigned char [0 ,255]
4.???????? 和strcpy 的根本區(qū)別?? C++:memset ,memcpy
#include "memory.h"
memset用來對一段內(nèi)存空間全部設置為某個字符,一般用在對定義的字符串進行初始化為‘ '或‘\0';例:char a[100];memset(a, '\0', sizeof(a));
memcpy用來做內(nèi)存拷貝,你可以拿它拷貝任何數(shù)據(jù)類型的對象,可以指定拷貝的數(shù)據(jù)長度;例:char a[100],b[50]; memcpy(b, a, sizeof(b));注意如用sizeof(a),會造成b的內(nèi)存地址溢出。
strcpy就只能拷貝字符串了,它遇到'\0'就結束拷貝;例:char a[100],b[50];strcpy(a,b);如用strcpy(b,a),要注意a中的字符串長度(第一個‘\0'之前)是否超過50位,如超過,則會造成b的內(nèi)存地址溢出。
strcpy
原型:extern char *strcpy(char *dest,char *src);
用法:#include
功能:把src所指由NULL結束的字符串復制到dest所指的數(shù)組中。
說明:src和dest所指內(nèi)存區(qū)域不可以重疊且dest必須有足夠的空間來容納src的字符串。
返回指向dest的指針。
memcpy
原型:extern void *memcpy(void *dest, void *src, unsigned int count);
用法:#include
功能:由src所指內(nèi)存區(qū)域復制count個字節(jié)到dest所指內(nèi)存區(qū)域。
說明:src和dest所指內(nèi)存區(qū)域不能重疊,函數(shù)返回指向dest的指針。
Memset
原型:extern void *memset(void *buffer, char c, int count);
用法:#include
功能:把buffer所指內(nèi)存區(qū)域的前count個字節(jié)設置成字符c。
說明:返回指向buffer的指針。
5.???????? 是干什么用的ASSERT()
ASSERT()是一個調(diào)試程序時經(jīng)常使用的宏,在程序運行時它計算括號內(nèi)的表達式,如果表達式為FALSE (0), 程序?qū)蟾驽e誤,并終止執(zhí)行。如果表達式不為0,則繼續(xù)執(zhí)行后面的語句。這個宏通常原來判斷程序中是否出現(xiàn)了明顯非法的數(shù)據(jù),如果出現(xiàn)了終止程序以免導致嚴重后果,同時也便于查找錯誤。例如,變量n在程序中不應該為0,如果為0可能導致錯誤,你可以這樣寫程序:
......
ASSERT( n != 0);
k = 10/ n;
......
ASSERT只有在Debug版本中才有效,如果編譯為Release版本則被忽略。
assert()的功能類似,它是ANSI C標準中規(guī)定的函數(shù),它與ASSERT的一個重要區(qū)別是可以用在Release版本中。
6.???????? ("pause");系統(tǒng)的暫停程序,按任意鍵繼續(xù),屏幕會打印,"按任意鍵繼續(xù)。。。。。" 省去了使用getchar();system
7.???????? 請問C++的類和C里面的struct有什么區(qū)別?
c++中的類具有成員保護功能,并且具有繼承,多態(tài)這類oo特點,而c里的struct沒有
8.???????? 請講一講析構函數(shù)和虛函數(shù)的用法和作用?
析構函數(shù)也是特殊的類成員函數(shù),它沒有返回類型,沒有參數(shù),不能隨意調(diào)用,也沒有重載。知識在類對象生命期結束的時候,由系統(tǒng)自動調(diào)用釋放在構造函數(shù)中分配的資源。這種在運行時,能依據(jù)其類型確認調(diào)用那個函數(shù)的能力稱為多態(tài)性,或稱遲后聯(lián)編。另:析構函數(shù)一般在對象撤消前做收尾工作,比如回收內(nèi)存等工作,虛擬函數(shù)的功能是使子類可以用同名的函數(shù)對父類函數(shù)進行重載,并且在調(diào)用時自動調(diào)用子類重載函數(shù),如果是純虛函數(shù),則純粹是為了在子類重載時有個統(tǒng)一的命名而已。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- c語言面試題集(完整版)
- Java的經(jīng)典面試題和答案詳細說明 0次下載
- Python的一些經(jīng)典面試題資料合集免費下載 15次下載
- Android的多個經(jīng)典面試題詳細講解
- 單片機C語言面試題的詳細資料合集
- Java的一些基礎面試題資料合集免費下載
- 中軟的一套面試題和一些C++的經(jīng)典面試題資料合集免費下載 4次下載
- 經(jīng)典硬件面試題精選及解答 0次下載
- C語言經(jīng)典面試題目 0次下載
- C++面試試題及答案 0次下載
- C語言經(jīng)典面試題 0次下載
- c語言面試題集 0次下載
- c語言面試題集 9次下載
- c語言面試題,c++面試題下載
- 《C/ C++/ Java 程序設計經(jīng)典教程》
- vb語言和c++語言的區(qū)別 1480次閱讀
- C語言和C++中那些不同的地方 748次閱讀
- 硬件工程師經(jīng)典面試題詳解 1130次閱讀
- 分享10道有趣的嵌入式C語言面試題及答案 2304次閱讀
- 如何把C++程序改寫成C語言 3149次閱讀
- 關于數(shù)組常見的面試題 1509次閱讀
- C++語言的發(fā)展 558次閱讀
- C語言與C++面試知識點總結 1746次閱讀
- 常見的MySQL高頻面試題 2266次閱讀
- C語言和C++的特點與用法詳細說明 4216次閱讀
- Python最常見的面試題解答 3372次閱讀
- sizeof與strlen到底有什么區(qū)別經(jīng)典C語言面試題講解 7159次閱讀
- Java編程和c語言哪一種更有優(yōu)勢_C語言與JAVA的區(qū)別是什么 2.4w次閱讀
- java單元測試怎么寫 8392次閱讀
- c++和c語言之間有什么區(qū)別 3.1w次閱讀
下載排行
本周
- 1電子電路原理第七版PDF電子教材免費下載
- 0.00 MB | 1490次下載 | 免費
- 2單片機典型實例介紹
- 18.19 MB | 92次下載 | 1 積分
- 3S7-200PLC編程實例詳細資料
- 1.17 MB | 27次下載 | 1 積分
- 4筆記本電腦主板的元件識別和講解說明
- 4.28 MB | 18次下載 | 4 積分
- 5開關電源原理及各功能電路詳解
- 0.38 MB | 10次下載 | 免費
- 6基于AT89C2051/4051單片機編程器的實驗
- 0.11 MB | 4次下載 | 免費
- 7藍牙設備在嵌入式領域的廣泛應用
- 0.63 MB | 3次下載 | 免費
- 89天練會電子電路識圖
- 5.91 MB | 3次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費
- 2PADS 9.0 2009最新版 -下載
- 0.00 MB | 66304次下載 | 免費
- 3protel99下載protel99軟件下載(中文版)
- 0.00 MB | 51209次下載 | 免費
- 4LabView 8.0 專業(yè)版下載 (3CD完整版)
- 0.00 MB | 51043次下載 | 免費
- 5555集成電路應用800例(新編版)
- 0.00 MB | 33562次下載 | 免費
- 6接口電路圖大全
- 未知 | 30320次下載 | 免費
- 7Multisim 10下載Multisim 10 中文版
- 0.00 MB | 28588次下載 | 免費
- 8開關電源設計實例指南
- 未知 | 21539次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935053次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537791次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233045次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191183次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183277次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138039次下載 | 免費
評論
查看更多