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 }