應聘C語言類工作職位面試題大彙總5

2021-04-14 01:13:02 字數 1436 閱讀 4929

思科

1. 用巨集定義寫出swap(x,y)

#define swap(x, y)/

x = x + y;/

y = x - y;/

x = x - y;

2.陣列a[n],存放了1至n-1個數,其中某個數重複一次。寫乙個函式,找出被重複的數字.時間複雜度必須為o(n)函式原型:

int do_dup(int a,int n)

3 一語句實現x是否為2的若干次冪的判斷

int i = 512;

cout << boolalpha << ((i & (i - 1)) ? false : true) << endl;

4.unsigned int intvert(unsigned int x,int p,int n)實現對x的進行轉換,p為起始轉化位,n為需要轉換的長度,假設起始點在右邊.如x=0b0001 0001,p=4,n=3轉換後x=0b0110 0001

unsigned int intvert(unsigned int x,int p,int n);

int *ptr=(int *)(&a+1);

printf("%d,%d",*(a+1),*(ptr-1));

輸出:2,5

*(a+1)就是a[1],*(ptr-1)就是a[4],執行結果是2,5

&a+1不是首位址+1,系統會認為加乙個a陣列的偏移,是偏移了乙個陣列的大小(本例是5個int)

int *ptr=(int *)(&a+1);

則ptr實際是&(a[5]),也就是a+5

原因如下:

&a是陣列指標,其型別為 int (*)[5];

而指標加1要根據指標型別加上一定的值,

不同型別的指標+1之後增加的大小不同

a是長度為5的int陣列指標,所以要加 5*sizeof(int)

所以ptr實際是a[5]

但是prt與(&a+1)型別是不一樣的(這點很重要)

所以prt-1只會減去sizeof(int*)

1.請問以下**有什麼問題:

int main()

char a;

char *str=&a;

strcpy(str,"hello");

printf(str);

return 0;

沒有為str分配記憶體空間,將會發生異常

問題出在將乙個字串複製進乙個字元變數指標所指位址。雖然可以正確輸出結果,但因為越界進行內在讀寫而導致程式崩潰。

char* s="aaa";

printf("%s",s);

s[0]='b';

printf("%s",s);

有什麼錯?

"aaa"是字串常量。s是指標,指向這個字串常量,所以宣告s的時候就有問題。

cosnt char* s="aaa";

然後又因為是常量,所以對是s[0]的賦值操作是不合法的。

應聘C語言類工作職位面試題大彙總6

1 寫乙個 標準 巨集,這個巨集輸入兩個引數並返回較小的乙個。define min x,y x y y x 結尾沒有 2 嵌入式系統中經常要用到無限迴圈,你怎麼用c編寫死迴圈。while 1 或者for 3 關鍵字static的作用是什麼?定義靜態變數 4 關鍵字const有什麼含意?表示常量不可以...

C語言面試題大彙總之華為面試題

1 區域性變數能否和全域性變數重名?答 能,區域性會遮蔽全域性。要用全域性變數,需要使用 區域性變數可以與全域性變數同名,在函式內引用這個變數時,會用到同名的區域性變數,而不會用到全域性變數。對於有些編譯器而言,在同乙個函式內可以定義多個同名的區域性變數,比如在兩個迴圈體內都定義乙個同名的區域性變數...

C語言面試題大彙總之華為面試題

1 區域性變數能否和全域性變數重名?答 能,區域性會遮蔽全域性。要用全域性變數,需要使用 區域性變數可以與全域性變數同名,在函式內引用這個變數時,會用到同名的區域性變數,而不會用到全域性變數。對於有些編譯器而言,在同乙個函式內可以定義多個同名的區域性變數,比如在兩個迴圈體內都定義乙個同名的區域性變數...