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 }