零散
-
说明一种新的类型名 typedef int v3;
-
x+=x-=x*x; 先算x-=x*x,再算x+=x;
-
int *f( );中,标识符f代表的是一个返回值为指针型的函数名
-
char (*p)[16],p是指向长度为16的字符数组的指针
-
假设已经有定义“ const char*name=" chen " ;”,下面的语句中错误的是(A)? A:name[3]='q'; B:name="lin"; C:name=new char[3]; D:name=new char('q'); name被定义指向常量的指针,所以它所指的内容不能改变,但指针本身的内容可以修改
-
B(int x,int y){a=x--;b=x*y--;}。则执行B(3,5);得3,10 1、x先赋值给a再执行--操作 所以执行完 a=x-- 之后 a=3 x=2; 2、-- 向右结合第一个变量y,但是此时先算x*y后y再执行 -- 操作,所以执行完 b=x*y-- 之后 b=10 y=4。
-
main函数可以调用自己(用户可以调用main函数)
-
fseek(fp,位移量,起始点)
-
虽然静态成员不属于类的某个对象,但是我们仍然可以使用类的对象、引用或者指针来访问静态成员 成员函数不用通过作用域运算符就能直接使用静态成员 静态数据成员不是由类的构造函数初始化的 静态成员可以作为默认实参,非静态成员不能,原理this指针
-
C语言数组溢出不会报错
-
右值(=右边)不能被赋值
-
在64位操作系统上,下面程序返回什么结果:2400 int main() { int *k[10][30]; printf(""%d\n"", sizeof(k)); return 0; } 1、int *k[10][30];表示的是指针数组,一共有10*30=300个元素 2、在64位系统下,每个指针的长度是8字节,因此总长度为2400字节
-
字符处理函数strcpy()、strcat()都是不安全的,建议使用strncpy()、strncat(),程序没有对输入合法性进行检查,因此用户可以采用一定手段构造command injection 进行攻击。
-
字符常量可以参与任何整数运算
-
char * p= new char[100] p在栈上 new出来的在堆上 动态分配在堆中,其它的内存分配都在栈上进行。
-
1.内联函数在运行时可调试,而宏定义不可以; 2.编译器会对内联函数的参数类型做安全检查或自动类型转换(同普通函数),而宏定义则不会; 3.内联函数可以访问类的成员变量,宏定义则不能; 4.在类中声明同时定义的成员函数,自动转化为内联函数。
-
空指针可以确保不指向任何对象或函数; 而未初始化指针则可能指向任何地方。
-
友元只能通过某具体对象访问所有的数据成员
-
不可重载运算符包括?: :: . .*这四个
-
在派生类中重写一个虚函数时,要求函数名、参数的个数、参数的类型、参数的顺序和函数的返回值相同
-
指针函数是指函数的返回值为指针的函数
-
自动变量(auto)和寄存器变量(register)属于动态存储,调用时临时分配单元
-
+优先级高于&(按位与)
-
const char *str = “123456”; sizeof(str)的结果为4(指针类型)
-
执行以下代码 #define SUM(x,y) x+y int a=3; int b=2; a+=a*SUM(a,b)*b; a的值为 16 宏函数SUM只在预编译阶段做预处理工作,即只是简单地进行字符替换而已。 a += a*SUM(a,b)*b a+= a*a+b*b
-
枚举赋值问题,从上一个定义开始逐个低增
-
在函数中定义的变量,其存储单元在内存的栈区
-
有哪几种情况只能用intialization list 而不能用assignment?ABC 当类中含有const成员变量 基类无默认构造函数时,有参的构造函数都需要初始化。 当类中含有reference成员变量 当类中含有static成员变量
-
在C++中,来自class的继承默认按照private继承处理,来自struct的继承默认按照public继承处理 class的成员默认是private权限,struct默认是public权限 c里面的struct只是变量的聚合体,struct不能有函数 c++的struct可有构造和析构函数
-
j=i+++1,表达式等价于j=(i++)+1
-
XB::XB(int a,int b):XA(a),y(b){ }
-
在二维数组int a【2】【4】={{2,4,5,7},{3,6,1,8}}中,*(&a【0】【0】+4)的值是3
-
若有以下说明和语句,int c[4][5],(*p)[5];p=c;能正确引用c数组元素的是( D )。 p+1 *(p+3) *(p+1)+3 *(p[0]+2) 数组指针(也称行指针) 定义 int (*p)[n]; ()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。 如要将二维数组赋给一指针,应这样赋值: int c[4][5]; int (*p)[5]; //该语句是定义一个数组指针,指向含5个元素的一维数组。 p=c; //将该二维数组的首地址赋给p,也就是c[0]或&c[0][0] p++; //该语句执行过后,也就是p=p+1;p跨过行c[0][]指向了行c[1][] *(p[0]+2);//等价于*(*(p+0)+2),表示a[0][2]; 1.&a[i][j] 数组元素a[i][j]的地址 2.&a[i] 数组元素a[i][0]的地址 3.a[0]+j 数组元素a[0][j]的地址 4.*(*(a+i)+j) 数组元素a[i][j]的地址 5.*(a[i]+j) 数组元素a[i][j]的地址
-
预定义的标识符不是C语言关键字
-
BSS段:通常是指用来存放程序中未初始化的全局变量的一块内存区域; 数据段:通常是指用来存放程序中已初始化的全局变量的一块内存区域,static意味着在数据段中存放变量; 代码段:通常是指用来存放 程序执行代码 的一块内存区域; 堆:存放进程运行中被动态分配的内存段,它的大小并不固定,可动态扩张或缩减,这一块在程序运行前就已经确定了; 栈:栈又称堆栈, 存放程序的 局部变量 (不包括static声明的变量)。除此以外,在函数被调用时,栈用来传递参数和返回值。
-
feof函数的用法是从输入流读取数据,如果到达稳健末尾(遇文件结束符),eof函数值为非零值,否则为0
-
当const在*的左边,不能改变指针的对象的值 = 指针所指向的内存,也就是说不能修改我们要找的人, 当const在*的右边,不能改变指针的地址,也就是说不能修改我们要找的地址。
-
在x86的机器上,int a=0xabcd1234 char b=((char*)&a)[0]请问b是多少?0x34 x86是小端存储,即高位存储在高地址,低位存储在低地址。 int a = 0xabcd1234; 内存中 ab cd 12 34,b作为一个char,右边表达式指针指向为0x34.
-
当free释放内存之后,指针还指向原来的那块地址,需要我们设置 p= NULL
-
32位系统下任何类型指针的长度都是4个字节
-
#include命令的功能是在命令处插入一个文本文件
-
struct 的成员默认是公有的 类的成员默认是私有的
-
byte ,值域-128至127