常見面試題一

1.下列程序在 32 linux unix 中的結果是什麼? 
func(char *str)
{
printf("%d",sizeof(str));
printf("%d",strlen(str));

main()
{
char a[]="123456789";

printf("%d",sizeof(a));

func(a);
}

: 10 4 9

這個也就是說sizeof 來計算的時候,要在字符串後面加一個 /0 ,而 strlen ()不加。

其他str 爲一個指針,故 sizeof(str) 4;

2、在 C++ 的內中定義訪問函數,即是在這個函數中不能修改相應的成員變量。

如:int read() const

{}在函數名後加 const

3、 參數傳遞項總結:按值調用適用於不被函數更改的小對象;按常量引用調用用於不被函數更改的大對象;引址調用適用於所有可以被函數更改的對象;

4、 交換二個數,不使用其他的變量:

方法一:A = A + B; B = A - B; A = A-B;

方法二:a = a^b; b = a^b; a = a^b;

5、 反轉字符串:

 14 char * revese(char *str)

     15 {

     16     if (str == NULL)

     17     {

     18         return str;

     19     }

     20     int n = strlen(str);

     21     int i = 0;

     22     if ((n == 0) || (n == 1))

     23     {

     24         return str;

     25     }

     26     char * temp = (char *)malloc(sizeof(char) * n + 1);

     27 

     28     for (i = 0; i < n; i++)

     29     {

     30         temp[i] = str[n - i - 1];

     31 

     32     }

     33 

     34     temp[i] = '/0';

     35     return temp;

     36 }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章