1.static有什麼用途?
首先看看c程序的內存分布。
數據庫,局部變量在棧。
3.堆棧溢出一般是由什麼原因導致的?
堆棧溢出一般是循環的遞歸調用導致的,如果使用的大數據結構的局部變量,也可能導致堆棧溢出。
沒有回收垃圾資源導致的是內存洩露最後內存耗盡。
5.寫出float x 與“零值”比較的if語句。
因為float的精度是小學點的後六位,所以正確的比較語句是:
if(x<0.000001&&x>-0.000001)
6.將一個字符轉化成整形的函數及其原型。
atol();
函數原型。
long atol(const char *nptr);
7.對一個頻繁使用的短小函數,在C中應該如何實現?在C++中如何實現?
C中只能使用宏定義,c++中可以使用inline。
8.軟件測試都有哪些種類:
黑盒測試:針對系統功能的測試。
白盒測試:測試函數功能和函數接口。
9.確定模塊的功能和模塊的接口是在軟件設計的哪個階段完成?
{
軟件設計的流程:
1)市場調研
2)需求分析
3)概要設計
4)詳細設計
5)編碼
6)測試
7)維護
}
答:確定模塊的功能和模塊的接口是在概要設計階段完成的。
10.
unsigned char *p1;
unsigned long *p2;
p1=(unsigned char *)0x801000;
p2=(unsigned long *)0x810000;
請問p1+5=? ;
p2+5=? ;
上述題目考查char的長度和long的長度。char的長度為1,long的長度為8.
而p1是一個地址,*p1才代表地址存放的值。而地址是16進制。
所以地址+5相當於地址的增加。0+5*1=5;0+5*4=20 = 014.
答:p1+5=0x801005 ;
p2+5=0x810014 ;
11.
請問下面程序有什麼錯誤?
int a[60][250][1000],i,j,k;
for(k=0;k<1000;k++)
for(j=0;j<250;j++)
for(i=0;i<60;i++)
a[i][j][k]=0;
把循環語句內外換一下
(編譯的時候沒錯,運行的時候出錯,但這個數組太大,如果放在棧中,還是會溢出,要作為全局變量)
12. unsigned char 0 到 255
#define Max_CB 500
void LmiQueryCSmd(Struct MSgCB * pmsg)
{
unsigned char ucCmdNum;
......
for(ucCmdNum=0;ucCmdNum
{
......;
}
死循環(unsigned char 0
到 255)
13.
以下是求一個數的平方的程序,請找出錯誤:
#define SQUARE(a)((a)*(a))
int a=5;
int b;
b=SQUARE(a++);//a被加了2次 a=7,b=25