先写个小结
1.多组输入的方法
2.处理后面字符换行符 3. 4.计算数组元素个数:sizeof(数组)/sizeof(数组[0]) 5.p是一指向结构体类型的指针变量,其初始值是让其指向结构体变量a,要通过指针变量p来引用结构体变量的成员next,通常可使用两种形式:p->next 或(*p).next,而p.next是非法的引用。
习题练习
答案:24
尴尬了 我还以为是函数
答案:错误
答案:单向值传递 本题考查函数调用时的数据流向问题。简单变量只能实现单向的值传递。在调用函数时,通常在主调函数和被调函数之间有数据传递关系。在定义函数时,函数名后面括号中的变量名称为“形参”;在调用函数时,函数名后面括号中的变量名称为“实参”。有关实参和形参的说明如下: (1)形参在函数未被调用时,不占用存储单元,只有在发生函数调用时形参才被分配内存空间,函数调用结束后,释放形参所占的内存空间。 (2)在被定义的函数中,必须指定形参的类型。 (3)实参可以是常量、变量或表达式。 (4)实参与形参的类型应一致。 (5)如果形参是简单变量,实参对形参的数据传递是按值传递,即单向传递,只能由实参传给形参,不能由形参传回来给实参。 如果形参是地址变量,实参对形参的数据传递是按地址传递,可以实现双向传递,既能由实参传给形参,又能由形参传回来给实参
答案:8 答案:515
union为共享体,共享存储空间,在给i 分配存储空间后,并不会为char再开辟新的存储空间。此时union里的存储情况为 0000 0000 0000 0000 0000 0000 0000 0000,然后再从低8位开始分别存储3和2,低16位变为0000 0010 0000 0011(高16位全为0),再把它当做i来输出,自然就是515
下面程序运行后,输出的结果是() #include“studio.h” void main(void) {union{char c: int i:}u; u.c=‘A’; u.i=0×0143; printf("%d,%d",u.c,u.i); }
答案:67,323 答案:装载阶段、执行阶段
答案:C 考察的是实参调用和形参声明的参数匹配。根据题干声明定义的f1 (int x,int y,int*p)函数中参数类型,调用所需要的实参类型也应该对应匹配。B、D语法错误。 A中的实参为整型变量和形参中的声明指针不匹配。
答案:错误
宏定义不做语法检查。 预处理是在编译之前的处理,而编译的工作之一便是语法检查,所以预处理不做语法检查。 题中的S(a,b)是没问题的,有问题的调用的地方。 宏定义在代码中只是简单的替换,调用时简单的将S(a,b)替换为“t=a;a=b;b=t“,编译时会显示t未定义。 但是若是只是有宏定义,但代码中未使用S(a,b)的话,是不会出现t未定义的情况的,因为在代码中压根就没有替换来的”t=a;a=b;b=t“。
答案: a构造 b构造 b析构 a析构 按变量声明顺序构造对象,然后入栈。按相反顺序出栈,析构对象。
答案:12
答案:4
32位计算机指针大小为4字节,64位计算机指针大小是8字节
答案:36
这就是一个递归题目 最终答案是 1+ 8 + 27 = 36
答案:D
答案:A
看定义记得注意优先级,int * pa[5],首先[]优先级比高,所以pa与[]先结合,pa[5]表明pa是一个数组,大小是5,既然知道pa是数组了,接下来就是确认数组元素了,int表明数组元素是指针; int(* p)[5],首先()优先级比[]高,所以pa先与*结合,*pa表明pa是一个指针,既然知道pa是指针,接下来确认指针指向的数据类型,int [5]表明指针指向大小为5的int型数组。
答案:7 答案:0 这道题最主要考察了变量自动初始化相关知识点: 变量自动初始化分为内置类型和类类型之分: 1.内置类型的自动初始化:程序中有一个数据区,用来存放已初始化全局变量,静态变量和常量,这部分增加了目标文件的大小;还有一个未初始化数据区(BSS),用来存放未初始化全局变量,BSS的数据在程序开始执行之前被初始化为0或NULL,实际上BSS段数据在目标文件中只占一个符号位,编译器并没有给变量分配空间,“初始化为0”是指链接阶段才申请空间,并初始化。局部 非静态变量未显示初始化时是一个随机值。 2.类类型的自动初始化:没什么特别的,无论是全局的还是局部的,都会调用默认构造函数进行初始化,有一点需要注意的是,当对象为全局作用域或者静态局部对象时,类的内置成员变量被初始化为0,而局部作用域时,内置成员变量不被自动初始化。
答案:4294967285 -128
|