青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

風(fēng)雨兼程

ring my bells
posts - 49, comments - 14, trackbacks - 0, articles - 0

C/C++面試題2

Posted on 2008-05-22 21:55 silentneil 閱讀(478) 評論(0)  編輯 收藏 引用

1.
 關(guān)鍵字static的作用是什么?
在C語言中,關(guān)鍵字static有三個明顯的作用:
1)在函數(shù)體,一個被聲明為靜態(tài)的變量在這一函數(shù)被調(diào)用過程中維持其值不變。
2) 在模塊內(nèi)(但在函數(shù)體外),一個被聲明為靜態(tài)的變量可以被模塊內(nèi)所用函數(shù)訪問,但不能被模塊外其它函數(shù)訪問。它是一個本地的全局變量。
3) 在模塊內(nèi),一個被聲明為靜態(tài)的函數(shù)只可被這一模塊內(nèi)的其它函數(shù)調(diào)用。那就是,這個函數(shù)被限制在聲明它的模塊的本地范圍內(nèi)使用。
 
2.
const最經(jīng)常的用法
 1.為了防止傳遞的函數(shù)參數(shù)不被修改,在調(diào)用函數(shù)的形參中用const關(guān)鍵字.
2.const可以用來創(chuàng)建數(shù)組常量、指針常量、指向常量的指針等
const int a;     //前兩個的作用是一樣,a是一個常整型數(shù)。
int const a;
const int *a;    //第三個意味著a是一個指向常整型數(shù)的指針(也就是,整型數(shù)是不可修改的,但指針可以)。
int * const a;
int const * a const; //第四個意思a是一個指向整型數(shù)的常指針(也就是說,指針指向的整型數(shù)是可以修改的,但指針是不可修改的)。最后一個意味著a是一個指向常整型數(shù)的常指針(也就是說,指針指向的整型數(shù)是不可修改的,同時指針也是不可修改的)。
//注:const并不會阻止參數(shù)的修改

3.
下面的代碼輸出是什么,為什么?
void foo(void)
{
    unsigned int a = 6;
    int b = -20;
    (a+b > 6) ? puts("> 6") : puts("<= 6");
}
//當(dāng)表達(dá)式中存在有符號類型和無符號類型時所有的操作數(shù)都自動轉(zhuǎn)換為無符號類型。
因此-20變成了一個非常大的正整數(shù),所以該表達(dá)式計算出的結(jié)果大于6。
 
4.
#define dPS struct s *
typedef struct s * tPS;
以上兩種情況的意圖都是要定義dPS 和 tPS 作為一個指向結(jié)構(gòu)s指針。哪種方法更好呢?(如果有的話)為什么?
這是一個非常微妙的問題,任何人答對這個問題(正當(dāng)?shù)脑颍┦菓?yīng)當(dāng)被恭喜的。答案是:typedef更好。思考下面的例子:
dPS p1,p2;
tPS p3,p4;
第一個擴展為
struct s * p1, p2;
.上面的代碼定義p1為一個指向結(jié)構(gòu)的指,p2為一個實際的結(jié)構(gòu),這也許不是你想要的。第二個例子正確地定義了p3 和p4 兩個指針?;逎恼Z法
 
5.int a = 5, b = 7, c;
c = a+++b;//<==>c = a++ + b;
這段代碼持行后a = 6, b = 7, c = 12。
 

6.
寫出判斷ABCD四個表達(dá)式的是否正確, 若正確, 寫出經(jīng)過表達(dá)式中 a的值(3分)
int a = 4;
(A)a += (a++); (B) a += (++a) ;(C) (a++) += a;(D) (++a) += (a++);
a = ?
答:C錯誤,左側(cè)不是一個有效變量,不能賦值,可改為(++a) += a;
改后答案依次為9,10,10,11

7.頭文件中的 ifndef/define/endif 干什么用?預(yù)處理
答:防止頭文件被重復(fù)引用

8. switch()中不允許的數(shù)據(jù)類型是?
答:實型

9.
編寫strcat函數(shù)(6分)
已知strcat函數(shù)的原型是char *strcat (char *strDest, const char *strSrc);
其中strDest 是目的字符串,strSrc 是源字符串。
(1)不調(diào)用C++/C 的字符串庫函數(shù),請編寫函數(shù) strcat
答:
VC源碼:
char * __cdecl strcat (char * dst, const char * src)
{
char * cp = dst;
while( *cp )
cp++; /* find end of dst */
while( *cp++ = *src++ ) ; /* Copy src to end of dst */
return( dst ); /* return dst */
}
(2)strcat能把strSrc 的內(nèi)容連接到strDest,為什么還要char * 類型的返回值?
答:方便賦值給其他變量

10.

回答下面的問題(6分)
(1).Void GetMemory(char **p, int num){
*p = (char *)malloc(num);
}
void Test(void){
char *str = NULL;
GetMemory(&str, 100);
strcpy(str, "hello");
printf(str);
}
請問運行Test 函數(shù)會有什么樣的結(jié)果?
答:輸出“hello”
(2). void Test(void){
char *str = (char *) malloc(100);
strcpy(str, “hello”);
free(str);
if(str != NULL){
strcpy(str, “world”);
printf(str);
}
}
請問運行Test 函數(shù)會有什么樣的結(jié)果?
答:輸出“world”
(3). char *GetMemory(void){
char p[] = "hello world";
return p;
}
void Test(void){
char *str = NULL;
str = GetMemory();
printf(str);
}
請問運行Test 函數(shù)會有什么樣的結(jié)果?
答:無效的指針,輸出不確定
 
11.
程序什么時候應(yīng)該使用線程,什么時候單線程效率高。
答:1.耗時的操作使用線程,提高應(yīng)用程序響應(yīng)
2.并行操作時使用線程,如C/S架構(gòu)的服務(wù)器端并發(fā)線程響應(yīng)用戶的請求。
3.多CPU系統(tǒng)中,使用線程提高CPU利用率
4.改善程序結(jié)構(gòu)。一個既長又復(fù)雜的進(jìn)程可以考慮分為多個線程,成為幾個獨立或半獨
立的運行部分,這樣的程序會利于理解和修改。
其他情況都使用單線程。

12
.C++中什么數(shù)據(jù)分配在棧或堆中,New分配數(shù)據(jù)是在近堆還是遠(yuǎn)堆中?
答:棧: 存放局部變量,函數(shù)調(diào)用參數(shù),函數(shù)返回值,函數(shù)返回地址。由系統(tǒng)管理
堆: 程序運行時動態(tài)申請,new 和 malloc申請的內(nèi)存就在堆上
13.
int i=10, j=10, k=3;
k*=i+j; k最后的值是?
答:60,此題考察優(yōu)先級,實際寫成: k*=(i+j);,賦值運算符優(yōu)先級最低

14.
ICMP是什么協(xié)議,處于哪一層?
答:Internet控制報文協(xié)議,處于網(wǎng)絡(luò)層(IP層)
15.
全局變量和局部變量在內(nèi)存中是否有區(qū)別?如果有,是什么區(qū)別?
      全局變量儲存在靜態(tài)數(shù)據(jù)庫,局部變量在堆棧。
17.
-1,2,7,28,,126請問28和126中間那個數(shù)是什么?為什么?
第一題的答案應(yīng)該是4^3-1=63
規(guī)律是n^3-1(當(dāng)n為偶數(shù)0,2,4)
      n^3+1(當(dāng)n為奇數(shù)1,3,5)
 
18.
Heap與stack的差別。
Heap是堆,stack是棧。
Stack的空間由操作系統(tǒng)自動分配/釋放,Heap上的空間手動分配/釋放。
Stack空間有限,Heap是很大的自由存儲區(qū)
C中的malloc函數(shù)分配的內(nèi)存空間即在堆上,C++中對應(yīng)的是new操作符。
程序在編譯期對變量和函數(shù)分配內(nèi)存都在棧上進(jìn)行,且程序運行過程中函數(shù)調(diào)用時參數(shù)的傳遞也在棧上進(jìn)行

19.
用宏定義寫出swap(x,y)     //如果把較長的宏定義分成干行,須在待續(xù)的行末尾加上\
#define swap(x,y) \
x=x+y;\
y=x-y;\
x=x-y
注意:結(jié)尾沒有;
20
一個指針為4個字節(jié)
 int *p;
 printf("%d",sizeof(p));//輸出: 4

void Func(char str[100])
{
printf("%d\n", sizeof(str));
}
答:
4
分析:
指針長度
一個32位的機器,該機器的指針是多少位
指針是多少位只要看地址總線的位數(shù)就行了。80386以后的機子都是32的數(shù)據(jù)總線。所以指針的位數(shù)就是4個字節(jié)了。
21.
main()
{
  int a[5]={1,2,3,4,5};
   int *ptr=(int *)(&a+1);    //ptr實際是&(a[5]),也就是a+5
   printf("%d,%d",*(a+1),*(ptr-1));
}
輸出:2,5
*(a+1)就是a[1],*(ptr-1)就是a[4],執(zhí)行結(jié)果是2,5
&a+1不是首地址+1,系統(tǒng)會認(rèn)為加一個a數(shù)組的偏移,是偏移了一個數(shù)組的大小(本例是5個int)
int *ptr=(int *)(&a+1);  則ptr實際是&(a[5]),也就是a+5
原因如下:
&a是數(shù)組指針,其類型為 int (*)[5];
而指針加1要根據(jù)指針類型加上一定的值,不同類型的指針+1之后增加的大小不同 .a是長度為5的int數(shù)組指針,所以要加 5*sizeof(int)
所以ptr實際是a[5]  .但是ptr與(&a+1)類型是不一樣的(這點很重要)
所以prt-1只會減去sizeof(int*)
a,&a的地址是一樣的,但意思不一樣,a是數(shù)組首地址,也就是a[0]的地址,&a是對象(數(shù)組)首地址,a+1是數(shù)組下一元素的地址,即a[1],&a+1是下一個對象的地址,即a[5].

22.
1)給定結(jié)構(gòu)struct A
{
       char t:4;
       char k:4;
       unsigned short i:8;
       unsigned long m;
};問sizeof(A) = ?
給定結(jié)構(gòu)struct A
{
       char t:4; 4位
       char k:4; 4位
       unsigned short i:8; 8位     
       unsigned long m; // 偏移2字節(jié)保證4字節(jié)對齊
}; // 共8字節(jié)

23.
//輸出結(jié)果: 15
#include<stdio.h>
int main(void)
{
 char aa[10];
    printf("%d",strlen(aa));
 return 0;
}
 
24.
C和C++有什么不同?
從機制上:c是面向過程的(但c也可以編寫面向?qū)ο蟮某绦颍籧++是面向?qū)ο蟮?,提供了類。但是?br>c++編寫面向?qū)ο蟮某绦虮萩容易
從適用的方向:c適合要求代碼體積小的,效率高的場合,如嵌入式;c++適合更上層的,復(fù)雜的; llinux核心大部分是c寫的,因為它是系統(tǒng)軟件,效率要求極高。
從名稱上也可以看出,c++比c多了+,說明c++是c的超集;那為什么不叫c+而叫c++呢,是因為c++比
c來說擴充的東西太多了,所以就在c后面放上兩個+;于是就成了c++
C語言是結(jié)構(gòu)化編程語言,C++是面向?qū)ο缶幊陶Z言。
C++側(cè)重于對象而不是過程,側(cè)重于類的設(shè)計而不是邏輯的設(shè)計。

25 &和&&的區(qū)別。
&是位運算符。&&是布爾邏輯運算符。
26,short s1 = 1; s1 = s1 + 1;有什么錯? short s1 = 1; s1 += 1;有什么錯?
short s1 = 1; s1 = s1 + 1;有錯,s1是short型,s1+1是int型,不能顯式轉(zhuǎn)化為short型??尚薷臑閟1 =(short)(s1 + 1) .short s1 = 1; s1 += 1正確。

27.
17.在不用第三方參數(shù)的情況下,交換兩個參數(shù)的值
#include <stdio.h>
void main()
{
    int i=60;
    int j=50;
    i=i+j;
    j=i-j;
    i=i-j;
    printf("i=%d\n",i);
    printf("j=%d\n",j);
}
方法二:
i^=j;
j^=i;
i^=j;
方法三:
// 用加減實現(xiàn),而且不會溢出
a = a+b-(b=a)
28.
假設(shè)你有8個球,其中一個略微重一些,但是找出這個球的惟一方法是將兩個球放在天平上對比。最少要稱多少次才能找出這個較重的球?

答:
2次就可以了,方法:將其分成3堆,分別是3個、3個、2個。
第一次天平兩邊各放3個,會有兩種情況,一、兩邊持平一樣重,那較重的球則不在里面,那就把剩下的兩個稱一下就能找到較重那個了。第二種情況是有一邊較重,那較重的球就在較重那邊的3個之中,第二次稱就是就在這3個之中拿出兩個來比較,也有兩種情況,持平則較重的是沒放進(jìn)去稱的那個,有一邊較重則那個就是較重的。

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久青草福利网站| 亚洲视频一区二区| 久久久久久黄| 午夜精品理论片| 亚洲福利专区| 欧美高清在线一区二区| 久久久久综合网| 亚洲高清av在线| 亚洲欧洲一区二区在线播放| 狠狠色综合网| 亚洲精品日本| 亚洲精品色婷婷福利天堂| 在线一区二区三区四区五区| 亚洲小说区图片区| 亚洲欧美在线一区二区| 欧美一区在线视频| 欧美国产精品| 欧美成人免费观看| 亚洲高清自拍| 中文亚洲视频在线| 久久久久久网址| 翔田千里一区二区| 欧美精品三级日韩久久| 国产精品xvideos88| 激情视频一区二区三区| 亚洲国产精品一区二区第一页| 一本色道久久88亚洲综合88| 午夜亚洲性色福利视频| 久久久精品日韩| 在线视频精品| 久久久久久久性| 国产精品日本欧美一区二区三区| 国产午夜亚洲精品不卡| 国产欧美一区二区三区沐欲| 在线免费高清一区二区三区| 99精品欧美一区二区蜜桃免费| 久久精品欧美日韩精品| 亚洲黄色有码视频| 久久亚洲色图| 亚洲每日更新| 久久久久久亚洲精品中文字幕 | 亚洲欧洲一区二区天堂久久| 亚洲国产精品欧美一二99| 午夜日韩av| 欧美成人小视频| 极品尤物av久久免费看| 在线一区二区三区四区五区| 麻豆成人91精品二区三区| 亚洲午夜在线观看视频在线| 美女精品在线观看| 亚洲成在人线av| 欧美亚洲视频一区二区| 在线视频欧美精品| 欧美成人性生活| 在线播放日韩专区| 黄色国产精品一区二区三区| 91久久精品国产91性色tv| 亚洲综合日韩在线| 国产精品啊啊啊| 91久久精品国产| 欧美激情一区二区三区 | 小黄鸭精品密入口导航| 国产精品久久91| 亚洲精品在线视频观看| 亚洲电影免费观看高清完整版| 香蕉久久久久久久av网站| 国产精品一区二区在线| 亚洲香蕉在线观看| 亚洲国产你懂的| 欧美精品在线免费| 亚洲人成亚洲人成在线观看图片| 欧美激情一区二区三区全黄| 久久国产精品亚洲va麻豆| 欧美国产免费| 亚洲在线视频| 一本一道久久综合狠狠老精东影业 | 久久久久网站| 91久久精品www人人做人人爽| 久久久久成人精品免费播放动漫| 欧美一区二区视频在线| 国产精品色婷婷| 99re6这里只有精品视频在线观看| 免费成人在线观看视频| 久久精品在线| 亚洲美女区一区| 亚洲理论在线| 国产婷婷色一区二区三区| 欧美综合77777色婷婷| 亚洲三级影片| 国产欧美日韩高清| 久久久久久久久久码影片| 久久婷婷丁香| 亚洲激情在线激情| 一区二区三区黄色| 国产精品亚洲综合久久| 欧美一区二区黄| 免费成人av在线看| 一区二区三区高清视频在线观看 | 久久久久九九九九| 亚洲一区二区视频在线观看| 亚洲欧美日韩国产成人| 国产一区二区三区电影在线观看| 欧美成人有码| 欧美日韩亚洲一区二区| 久久深夜福利免费观看| 免费欧美日韩| 久久久久综合网| 欧美了一区在线观看| 亚洲精品视频一区二区三区| 9色精品在线| 伊人久久亚洲热| 宅男噜噜噜66国产日韩在线观看| 欧美国产日韩精品| 亚洲精品日日夜夜| 欧美二区在线看| 欧美在线视频二区| 欧美精品日韩综合在线| 亚洲欧美日本另类| 米奇777超碰欧美日韩亚洲| 日韩午夜激情av| 久久久五月婷婷| 在线一区免费观看| 欧美xx69| 久久久99免费视频| 欧美专区一区二区三区| 午夜欧美大片免费观看| 模特精品裸拍一区| 欧美成人午夜影院| 国产手机视频一区二区| 亚洲综合好骚| 一本色道久久综合精品竹菊| 欧美成人午夜影院| 久久综合九色综合欧美狠狠| 国产人成一区二区三区影院| 亚洲精品护士| 一区二区三区久久网| 久久综合久久美利坚合众国| 久久精品国产亚洲一区二区三区| 欧美日韩黄视频| 国产欧美一区二区三区国产幕精品| 亚洲欧洲日夜超级视频| 国产精品福利av| 亚洲一区精品视频| 中日韩在线视频| 国产精品乱码妇女bbbb| 亚洲日本在线观看| 亚洲淫性视频| 欧美视频免费在线观看| 亚洲婷婷综合色高清在线| 在线视频精品一| 国产精品qvod| 亚洲视频第一页| 欧美一区二区网站| 国产美女一区二区| 久久精彩免费视频| 狼人社综合社区| 久久久青草婷婷精品综合日韩| 久久久久久亚洲综合影院红桃 | 亚洲激情在线播放| 亚洲免费av观看| 欧美精品aa| 亚洲欧美另类综合偷拍| 性欧美8khd高清极品| 永久免费毛片在线播放不卡| 久久精品亚洲精品| 亚洲日本欧美| 亚洲性av在线| 在线精品视频免费观看| 欧美在线视频播放| 亚洲三级电影全部在线观看高清| 日韩午夜黄色| 国产欧美在线视频| 久久国产精品亚洲va麻豆| 亚洲国产黄色片| 亚洲午夜精品久久| 伊人色综合久久天天| 欧美精品九九| 国产综合色在线| 亚洲免费视频成人| 欧美中文字幕在线视频| 亚洲美女精品一区| 性久久久久久久| 欧美国产欧美亚州国产日韩mv天天看完整| 欧美高清在线精品一区| 欧美国产91| 国产麻豆精品在线观看| 黄色工厂这里只有精品| 欧美 日韩 国产精品免费观看| 亚洲国产成人久久综合| 欧美a级片网站| 午夜视频一区在线观看| 免费成人高清视频| 亚洲无毛电影| 激情综合色丁香一区二区| 欧美日韩一区二区三区在线| 亚洲欧美中文日韩在线| 亚洲少妇中出一区| 麻豆国产精品va在线观看不卡| 午夜精品久久久久久99热软件| 国产自产女人91一区在线观看|