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