1,一个int占几个字节?
在16 位系统下,占2个字节,在32,64位系统下占4个字节。
2,一个汉字占几个字节?
GBK编码格式,一个汉字占两个字节,UTF-8 格式下,不确定,
3,
#define BUG(X,Y) (X+1)*Y
int main()
{
int a = 3;
int b = 4;
printf("%d\n", BUG(a++, b++));
return 0;
}
答,结果是16
分析:宏替换后,(a++ + 1)* b++ ,先执行 a+1 ,则括号内等于4,之后才有a++等于4,原式等于(4)*b++
那肯定是先执行后加加,(4)*4=16 ,最后a=4,b=5
4,
二叉树中度为0的节点数等于度为2的节点数-1 n2=n0-1 度就是子树的数。
5,各种0的区别
_pStr= 0; --->把指针改成0,把指针指空,内存泄漏。
_pStr='\0'; ----->把指针改成空。内存泄漏
*_pStr=0; ------->将空间改成0,又因为0 就是 '\0' ,所以可以当字符串的结尾。一般不要用,不太清晰。
*_pStr='0'; -------->字符0,和数字0 ,‘\0’,没有关系,不能作为字符串的结尾。
*_pStr='\0'; --------->可以作为 结尾。
总结:数字0 就是 字符 ‘\0’
6,
空类(就是没有变量和虚函数)的大小是1,只有虚函数时是4.
7,
Linux下哪个命令可以用于判断host1主机是否能够访问host2主机的端口 telnet
8,在一个C类地址段内,需要将网络划分为 7个子网,每个子网有15个主机,则将使用哪个子网掩码 ()
7个子网,用三位表示就行,因为2^3=8
所以子网掩码== 11111111 11111111 11111111 111 00000
255.255.255.224
9,
void print(char ** p)
{
*p += 2;//p是指向第一个指针的指针,通过p指针改变第一个指针的指向,
//但并没有改变p指针与第一个指针的关系
}
int main()
{
char * a[] = { "123", "asdf", "qwer" };//实际上数组存放了3个char*指针,
//第一个指向了“1”
//第二个指向了“a”
//第三个指向了“q”
//数组名a表示首元素的地址,也就是第一个指针的地址
//类型是char**
char** p;
p = a;
print(p);
cout << **p << endl;//两次解引用得到p指针指向的指针指向的变量
return 0;
}