1.一个C语言程序是由()。
正确答案: B
函数组成
- 在16位C编译系统上,下列程序执行后的输出结果是()。
void main()
{int a=-32769;printf("%8U\n",a);}
8U:
格式字符必须小写,题中的”%8U”不会当作格式控制符,而是原样输出,变
量a将没有对应的格式说明,也不会输出
C语言中%d,%o,%f,%e,%x的意义
格式说明由“%”和格式字符组成,如%d%f等。它的作用是将输出的数据转换为指定的格式输出。格式说明总是由“%”字符开始的。不同类型的数据用不同的格式字符。
格式字符有d,o,x,u,c,s,f,e,g等。
如
%d整型输出,%ld长整型输出,
%o以八进制数形式输出整数,
%x以十六进制数形式输出整数,
%u以十进制数输出unsigned型数据(无符号数)。
%c用来输出一个字符,
%s用来输出一个字符串,
%f用来输出实数,以小数形式输出,
%e以指数形式输出实数,
%g根据大小自动选f格式或e格式,且不输出无意义的零。
scanf(控制字符,地址列表)
格式字符的含义同printf函数,地址列表是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址。如scanf("%d%c%s",&a,&b,str);
注意:
scanf输入double时只接受le或lf,不接受f
程序运行的时候,静态成员已经加载在内存里面了,但是包含静态成员的对象共享这些静态成员,
比方说,A有一个静态成员public static int i;那么程序运行的时候,这个i就加载进内存了,A的所有对象的i变量都指向这个静态空间的i,也就是说创建对象之前,它就占空间了
void func(char *p)
{
p=p+1;
}
int main()
{
char s[]={'1','2','3','4'};
func(s);
printf("%c",*s);
return 0;
}
以下程序执行后的输出结果为()
1:
p是一个指针,s也是一个指针,指针传指针,还是相当于值传递,函数调用时将s的内容(即字符'1'的地址)拷贝给p,p+1不会对s产生任何影响
使用对象名调用虚函数,是静态联编;
使用基类指针调用虚函数,是动态联编;
注释:include ""是先从本地目录开始寻找,然后去寻找系统路径,而Include <> 相反先从系统目录,后从本地目录,
typedef struct list_t{
struct list_t *next;
struct list_t *prev;
char data[0];
}list_t;
请问在32位系统中,sizeof(list_t)的值为? 8
在用作定义时char[0]是空数组,是不占空间的。如果定义char[1],那么就是长度为1的数组,使用char[0]则表示这唯一的数据,注意差别啦
在C++,下列哪一个可以做为对象继承之间的转换
dynamic_cast
reinterpret_cast:一个指针转化为其他类型的指针时,不做类型检测,操作结果是一个指针指向另一个指针的值的二进制拷贝;
static_cast:允许执行隐式转换和相反的转换操作,父类转换为子类是强制转换Son *son=static_cast(father),而子类转换为父类就是隐式转换;
dynamic_cast:用于对象的指针和引用,当用于多态类型转换时,允许隐式转换及相反的过程中,与static_cast的不同之处在于,在相反的转换过程中,dynamic_cast会检测操作的有效性,如果返回的不是被 请求的 有效完整对象,则返回null,反之返回这个有效的对象,如果是引用返回无效时则会抛出bad_cast异常;
const_cast:这个转换操作会操纵传递对象的const属性,或者设置或者移除该属性。
若全局变量仅在单个C 文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度
以下代码的运行结果为:
class Base {
public:
Base() {echo();}
virtual void echo() {printf(“Base”);}
};
class Derived:public Base {
public:
Derived() {echo();}
virtual void echo() {printf(“Derived”);}
};
int main() {
Base* base = new Derived();
base->echo();
return 0;
}
Base
Derived
Derived
Base* base = new Derived();
//首先将上面的语句分成两部分:
//前一部分是基类指针指向子类对象实现动态绑定,后一部分是new了一个子类对象;
//语句执行时,先执行后一部分new Derived()这句话,它会调用Derived() {echo();}
//而执行派生类的构造函数时,会先去执行基类的构造函数,所以会调用Base() {echo();},此时不涉及到虚函数的动态绑定,
//因为我们现在才执行了后一部分,还没有动态绑定,所以正常调用基类的echo()函数,执行完后返回到子类的构造函数,执行子类的echo();
//然后执行前一部分,实现虚函数的动态绑定。
base->echo();
//此时考察的就是虚函数的使用了,基类echo申明为虚函数,所以调用时会去子类寻找对应的虚函数执行。