零散4
-
给定C语言数据结构 struct T{ long w; union U{char c; int i; double d;}u1; } T1; 假设在64位系统下,在不考虑字对齐方式的情况下 为存储T1结构所需要的存储区域可能为(12或16)字节。 c语言中的union 是联合体,就是一个多个变量的结构同时使用一块内存区域,区域的取值大小为该结构中长度最大的变量的值; (1)32位:double 8字节,long 4字节,则最终12字节; (2)64位:double8字节,long8字节,最终16字节
-
有以下语句定义 int a[2][3]; int (*p)[3]=a; int *q=*a; 则能输出a[1][2]的值的语句是(ABC) cout<<*(*(a+1)+2) cout<<p[1][2]; cout<<*(q+5); cout<<q[1][2];
-
关于&和&&,描述正确的是CD 对于&和&&:当运算符两边的表达式为true时,结果均为true,只要有一边运算结果为false, 则结果均为false 如果运算符左边计算结果为false,则&不会再继续计算右边表达式值 如果运算符左边计算结果为false,则&&不会再继续计算右边表达式值 &可以作为位运算符,而&&不能
-
已知数组D的定义是int D[4][8];,现在需要把这个数组作为实参传递给一个函数进行处理。下列说明汇总可以作为对应的形参变量说明的是(CD)。 int D[4][] int *s[8] int(*s)[8] int D[][8]
-
char类型值的数值区间为-128~127
-
请声明一个指针,其所指向的内存地址不能改变,但内存中的值可以被改变。 int * const x = &y; const位于*左 指向的值不变,const位于*右侧,指针指向不可改变
-
对象成员的表示方法与结构体变量成员的表示方法相同
-
下面程序的输出结果为多少? 6 5 4 4 void Func(char str_arg[100]) { printf("%d\n", sizeof(str_arg)); } int main(void) { char str[] = "Hello"; printf("%d\n", sizeof(str)); printf("%d\n", strlen(str)); char *p = str; printf("%d\n", sizeof(p)); Func(str); } 对字符串进行sizeof 操作的时候,会把字符串的结束符“\0”计算进去的,进行strlen 操作求字符串的长度的时候,不计算\0 的。 数组作为函数参数传递的时候,已经退化为指针了,Func 函数的参数str_arg只是表示一个指针,那个100不起任何作用的。
-
下列关于赋值运算符“=”重载的叙述中,正确的是A 赋值运算符只能作为类的成员函数重载 默认的赋值运算符实现了“深层复制”功能 //默认的赋值运算符实现了“浅层复制”功能 重载的赋值运算符函数有两个本类对象作为形参 //一个 如果己经定义了复制拷贝构造函数,就不能重载赋值运算符 //可以
-
函数中的静态变量,在函数退出后不被释放
-
m%(-n) 等于m%n; (-m)%n 等于-(m%n)
-
下面代码打印结果为(8) class Base { char data[3]; public: virtual void f() { cout << "Base::f" << endl; } virtual void g() { cout << "Base::g" << endl; } virtual void h() { cout << "Base::h" << endl; } }; int main() { cout << sizeof(Base)<< endl; return 0; } 类中虚函数存放的只是虚函数表的指针,4个字节,加上char求组的3个字节,对齐以后就是8字节