當前位置:才華齋>計算機>C語言>

C語言試題

C語言 閱讀(2.13W)

1.函式指標申明時可以不用確定引數型別,只需要在定義和使用時帶上引數型別即可。參考《func1.c》

C語言試題

main()

{

int f();

int i,a,b;

int (*p)();

scanf("%d",&a);

p=f;

for(i=1;i<9;i++)

{

printf("Please Input The %d Number:",i);

scanf("%d",&b);

a=(*p)(a,b);

}

printf("The Max Number is:%d",a);

}

f(int x,int y)

{

int z;

z=(x>y)?x:y;

return z;

}

2.陣列指標與指標陣列:陣列指標int (*a)[10],指向陣列的指標,指標陣列int *a[10],包含10個指標的陣列。

*p1="I love you";和char p2[]="I love you";區別:字串存放的位置不同,讀寫屬性不同。指標p1指向的字串位於記憶體的只讀區,不可改變,陣列p2的字串位於堆疊中,可讀可寫,可以改變。

4.C語言的extern和static是對立的關鍵字。

py,memcpy,strcat等str函式返回值都是char *.

6.一般的,如果想讓if判斷一個變數的“真”、“假”,應直接使用if(var)、if(!var),表明其為“邏輯”判斷;如果用if判斷一個數值型變數(short、int、long等),應該用if(var==0),表明是與0進行“數值”上的比較;而判斷指標則適宜用if(var==NULL),這是一種很好的程式設計習慣。

7.結構體陣列和連結串列很相似,如果不需要中間插入元素,可以優先考慮用結構體陣列。

rn "C"作用:實現在C++中呼叫C函式。

例如:

/*C語言標頭檔案example.h*/

#ifndef EXAMPLE_H

#define EXAMPLE_H

extern int add(int x,int y);

/*C語言實現檔案example.c*/

int add(int x,int y)

{

return (x)+(y);

}

/*C++實現檔案,呼叫add(),*/

9.巨集實現函式功能在引數有自增自減操作時有副作用

程式碼:

#define MIN(a,b) (a)<(b)?(a):(b)

test10()

{

int x=3;

int y=8;

printf("MIN:%dn",MIN(x++,y));

}

輸出: MIN:4

extern "C"

{

#include "example.h"

}

int main(int argc,char *argv[])

{

add(2,3);

return 0;

}

實際上extern "C"是表明下面的申明編譯時按照C語言的.方式處理,不要做優化,如果沒有extern "C",在C++中將會對申明的函式名處理,上例中就會是add_int_int類似的函式名。

ic 在函式內部,表示該變數的值在各個呼叫間一直保持延續性;

在函式這一級,表示該函式只對本檔案可見

10.檔案存在判斷 -access

access函式用於判斷檔案許可權,用F_OK模式可以判斷檔案是否存在。

If(0 == access(*filename,F_OK))

檔案存在時的操作

11.位寬可變的printf輸出

int i;

printf("12345678901234567890n");

for(i=10;i>0;i--)

pirntf("%*s",i,"*n");

12.程式在記憶體中的分段

儲存態:

程式碼段:存放可執行程式碼,變數和申明是不可執行的。字串常量也存放在此。

資料段:包含靜態初始化的資料,有初值的全域性變數和static變數存放在此。

BSS段:存放未初始化的全域性變數和靜態變數。

執行態還有stack和heap段。stack段存放區域性變數、函式形參和返回值,heap段用於記憶體的動態分配

13.C語言中,僅有4種基本資料型別-整型,浮點型,指標和聚合型別(如陣列和指標等).

整型:字元,短整型,整型和長整型.每一種都有有符號和無符號兩種.

14.指標和指標變數區別?

變數儲存於計算機的記憶體中,每個變數都佔據一個特定的位置.每個記憶體位置都由地址唯一確定並引用,就像一條街道的房子由他們的門牌號碼標識一樣.指標只是地址的另一個名字罷了.指標變數就是一個其值為另外一個(一些)記憶體地址的變數.

15.指標和陣列區別?

指標使用必須賦初值,陣列使用可以不用賦初值;指標的地址可以輕易改變,陣列的首地址不會改變。