C/C++错题

1、
函数没有返回值时,默认返回类型是void;
函数有返回值但没有写类型时,默认返回类型是int;
2、
sizeof和strlen的区别:
1)
sizeof是关键字和运算符(操作符),计算时包括\0,即结果加上1。
strlen是函数,计算时以\0结束,结果不包括\0,即计算的是实际上的字符个数。

char str[20] = “0123456789”;
int a = strlen(str);
int b = sizeof(str);
结果:a=10,b=20; 
strlen在数组名做参数时计算的是整个数组的大小

2)
sizeof和strlen的计算结果类型都是size_t
sizeof的计算结果在编译时就算好了
strlen的计算结果在运行的时候才算好
3)
sizeof的参数可以是指针、数组、类型、对象和函数等。
strlen的参数只能是char*类型。
所以char *s=;和char str[]=“xxx”;对应的是strlen(s)和strlen(str)
3、
int a,b;(✔)
int a=b=10;(x)→编译错误
4、
数组名是常量,代表数组的首地址。
即常量不能自增,即char a[]=;a++;(x)
5、
#define SQUARE(X) X * X
SQUARE(10+2) →10+2 *10+2 =32(✔) 12 *12=144(x)
6、
1)printf
函数原型:int printf( const char *format, … );
返回值是输出的字符数量,不包括/0,一个空格算一个字符
2)sprintf
函数原型:int sprintf( char buffer, const char format, … );
返回值是输出的字符数量,不包括/0,一个空格算一个字符
函数功能:将数字变量转换为字符串。
     得到整型变量的16进制和8进制字符串。
     连接多个字符串。
7、
C++不能重载的运算符:
1、.:成员访问运算符
2、.
, ->
:成员指针访问运算符
3、:::域运算符
4、sizeof:长度运算符
5、?::条件运算符
6、#: 预处理符号
巧记:除了sizeof,其他带点的运算符都不行。
8、
浮点数的比较不可以用 = = 或者 !=
例如:while(x != 1.0) 这个是错的,结果会造成死循环
正确的做法是
9、
面向对象的基本特征有三个:多态、封装、继承
C/C++错题_第1张图片
10、
对于一个频繁使用的短小函数,在C语言中用宏实现,在C++中用内联函数实现。在功能上,c里面的宏定义相当于cpp里面的内联函数。
11、
GCC编译选项的意思:

gcc编译选项 选项的意义
-c 编译、汇编指定的源文件,但是不进行链接
-g 生成调试信息,该程序可以被调试器调试
-I 指定 include 文件的搜索目录
-E 预处理指定的源文件,不进行编译
-S 将源文件编译成汇编语言
-o [file1] [file2] 将文件 file2 编译成可执行文件 file1

12、
c/c++逗号用法:
a=表达式1,表达式2 由于=号的优先级大于,所以a=表达式1
a=(表达式1,表达式2) 由于()的优先级大于=,所以a=表达式2
13、
输出格式问题:
printf("%o\n",n)
%o输出不带前缀八进制,%#o输出带前缀八进制
14、
printf("%%%%") 输出的为%%,因为printf有转义字符
cout << “%%%%” << endl 输出的为%%%%,cout没有转义字符
15、
非静态变量不能由类调用,需要由对象调用。
静态变量:类名.变量名
非静态变量:对象名.变量名

你可能感兴趣的:(C/C++,c++,c语言)