幾道C語言題目

2021-09-22 06:30:13 字數 1209 閱讀 2503

下面**的輸出結果是?

int main()

;int (*ptr)[3] = a;

printf("

%d, %d\n

", (*ptr)[1], (*ptr)[2]);

++ptr;

printf("

%d, %d\n

", (*ptr)[1], (*ptr)[2]);

system("

pause

") ;

return

0 ;}

2, 3

5, 6

ptr的型別是int(*)[3],那麼*ptr的型別便是int[3],也就是int*(編譯器會將陣列名轉換成指標),所以*ptr相當於指向第乙個元素1的指標,所以ptr[1] = 2, ptr[2] = 3

++ptr相當於將ptr向後移動三個int,也就是12個位元組,所以此時ptr指向元素4,那麼ptr[1] = 5, ptr[2] = 6

下面**輸出什麼?

int i = 3;

int j = sizeof(++i + ++i);

cout << i << endl ;

cout << j << endl ;

1. 首先j的值肯定是4,因為無論括弧內部的值是多少,它始終是int型別。

2. i的值不是5,因為sizeof雖然是乙個編譯時運算子,但是卻有函式的性質,就是說,它有引數。這裡括弧裡面相當於sizeof的引數。而且i是值傳遞的。所以不會影響到原來的值,i = 3

如果是下面這樣呢?

int i = 3;

int j = (++i+ ++i);

cout << i << endl ;

cout << j << endl ;

很顯然,i = 5, j = 10.

下面**輸出什麼?

void f1(int *, int); 

void f2(int *, int);

void(*p[2]) ( int *, int);

int main()

void f1( int* p , int q)

void f2( int* p , int q)

輸出 5 5 5 5

注意,函式f1()和f2()確實能交換p和q,但是要注意,這裡的q是指傳遞,所以不會影響原來的值。

幾道關於面試的題目

實現乙個演算法,確定乙個字串的所有字元是否全部相同?最想想到的方法是通過比較該字串的每乙個字元,演算法的時間複雜度為0 n2 次。另一種辦法是可以利用set資料結構來實現,因為在set中不允許存在重複的字元。有乙個有意思的地方是在進行判斷前可以先判斷字串的長度,如果字串的長度大於256,那麼我們可以...

幾道JS閉包題目

function fun n,o 問 三個fun函式是一樣的嗎?答 第乙個fun是具名函式,可通過fun.name得到 fun 即函式名 返回值是乙個物件字面量表示式,屬於乙個新的object 物件字面量裡有乙個叫fun的屬性,該屬性是乙個匿名函式表示式,屬於新建立的函式,所以第乙個和第二個fun函...

常見陣列幾道題目

基礎題目 參 public class test4 統計字元陣列中字母出現次數 printcount chararray public static void printcount char chararray 列印字母和次數 for int i 0,ch 97 i count.length i c...