牛客刷题c语言总结

1.c++中,class和struct的区别:

        a.成员访问权限->class的成员访问权限为private,而struct的成员访问权限为public

        b.默认的继承方式->class的默认继承方式为private,而struct的默认继承方式为public

2.struct在C和C++之间的区别

        a.c中,struct是用户自定义数据类型,而c++中,struct是抽象数据类型,支持成员定义函数;

        b.c中的struct是没有权限设置的,但是在c++中,给strcut添加了权限设置,增加了访问权限;

        c.c中的struct只是变量的聚合体,可以封装数据,但是不可以隐藏,不可以定义函数成员;但是C++中的struct可以定义函数成员

3、setbase(int n) : 将数字转换为 n 进制.

4、cin输入时遇到空格会结束,所以一般用getline作为字符串的输入(含空格)。

cin>>

5、c语言写的代码程序肯定是源程序 它不能立即执行,必须经过编译成可执行代码如果这个源程序中不含有main函数,编译后的代码也是不可执行的, C语言不是解释执行的。

6、此时func就是 一种 int 数据类型如果往c语言内核探究,你会发现int 关键字之所以是 int 类型, 是因为内部用了类似int()这样的函数对int关键字进行了处理

7、fgetc函数——读成功,带回所读的字符,失败返回文件结束标志EOF(-1);

fputc函数——输出成果,返回值就是输出的字符,失败返回EOF;

fgets函数——读成功,返回地址,失败NULL;

fputs函数——输出成果,返回非负数,失败返回-1;

8、1. c++中,class和struct的区别:

        a.成员访问权限->class的成员访问权限为private,而struct的成员访问权限为public

        b.默认的继承方式->class的默认继承方式为private,而struct的默认继承方式为public

2.struct在C和C++之间的区别

        a.c中,struct是用户自定义数据类型,而c++中,struct是抽象数据类型,支持成员定义函数;

        b.c中的struct是没有权限设置的,但是在c++中,给strcut添加了权限设置,增加了访问权限;

        c.c中的struct只是变量的聚合体,可以封装数据,但是不可以隐藏,不可以定义函数成员;但是C++中的struct

可以定义函数成员

9、#define        定义一个预处理宏

#undef            取消宏的定义

#if                   编译预处理中的条件命令,相当于C语法中的if语句

#ifdef              判断某个宏是否被定义,若已定义,执行随后的语句

#ifndef            与#ifdef相反,判断某个宏是否未被定义

#elif                若#if, #ifdef, #ifndef或前面的#elif条件不满足,则执行#elif之后的语句,相当于C语法中的else-if(扩展条件)

#else              与#if, #ifdef, #ifndef对应, 若这些条件不满足,则执行#else之后的语句,相当于C语法中的else(扩展条件)

#endif             #if, #ifdef, #ifndef这些条件命令的结束标志.

defined          与#if, #elif配合使用,判断某个宏是否被定义

10、sizeof为什么是整形表达式

11、注意||这个东西是条件表达式,并不会赋值

12、^是异或运算符异或相同是0相反为1

13、data[0]的长度为零,字节为零。

14、关系运算符具有左结合性,注意连着写09这样的写法只能之别x>0

15、一个类中不管有多少个虚函数,虚函数表指针永远只有一个,该指针指向虚函数表VTable,

16、C语言定义二维数组可以省略第一维值,不能省略第二维值字符常量,是不允许使用字符常量来赋予初值的

17、从低到高的转换通常可以保持其值不变,高到低的转换可能会有数据的舍入,从而损失精度。

18、浮点位:符号位+指数位+尾数部分

19、常量静态变量应该是在编译环节就初始化了吧,全局静态是在程序运行前初始化,局部静态变量是在第一次运行到定义的时候初始化。

20、 a=b+c=3的计算顺序为(a=(b+c=3)),b+c的运算结果是一个右值,不能被赋值为3 。

21、printf默认右对齐

printf和scanf是库函数,不是语句

printf输出的数据受到:

1、输出域宽

2、小数域宽

3、数据在内存中存储精度的影响

赋值语句是一种执行语句,必须放在函数的可执行u分或者全局区域

22、顺序,选择,循环 C 语言程序可以不包含三种基本结构 , 也可以包含其中的一种或多种 , 

23、在c++中,const修饰常成员函数,需要放在文件末尾

24、%o以八进制无符号形式输出整型,不输出前导0

25、位运算ok了

26、浮点数0.0不是0是非常接近0的小数

27、位运算符号和%左右俩边必须都是整数

28、Stdio输入输出,stdlib数值转换,内存分配,stdarg可变参数

29、 类型参数化多态和包含多态统称为一般多态性,用来系统地刻画语义上相关的一组类型。 重载多态和强制多态统称为特殊多态性,用来刻画语义上无关联的类型间的关系

在c++语言中,这种多态性可以通过强制多态、重载多态、类型参数化多态、包含多态4种形式来实现。

类型参数化多态和包含多态统称为一般多态性,用来系统地刻画语义上相关的一组类型。

重载多态和强制多态统称为特殊多态性,用来刻画语义上无关联的类型间的关系

30、%俩边的数字必须为整型

31、标识符规则

1.由字母,数字,下划线和$组成

2.开头不能是数字

3.¥这个也符合标识符的规则

32、BSS段 通常是指用来存放程序中未初始化的或者初始化为0的全局变量和静态变量(在程序运行前局部变量还没有被分配空间)

数据段:通常是指用来存放程序中 已初始化 的 全局变量 的一块内存区域,static意味着在数据段中存放变量;

代码段:通常是指用来存放 程序执行代码 的一块内存区域;

堆:存放进程运行中被动态分配的内存段,它的大小并不固定,可动态扩张或缩减,这一块在程序运行前就已经确定了;

栈:栈又称堆栈, 存放程序的 局部变量 (不包括static声明的变量)。除此以外,在函数被调用时,栈用来传递参数和返回值

程序在运⾏前:分为代码区、BSS段(未初始化数据区)、data段(初始化数据区)

程序在运⾏后:堆区、栈区、全局区(静态区)、⽂字常量区、代码区

33、结构体在完成定义之前是incomplete type(不完全类型),不完全类型不能定义对象,只能定义引用和指针,或者用于声明函数的形参和返回值类型。

34、右值转换

  1. 隐式右值转换:

这种转换是由C++编译器自动执行的,它会自动将右值转换为目标类型。例如,将一个整数右值转换为浮点数类型。

cppCopy codeint intValue = 42; double doubleValue = intValue; // 隐式右值转换

  1. 显式右值转换:

这种转换需要程序员显式地使用类型转换操作符进行操作。这可以在代码中使用 static_cast、dynamic_cast、const_cast 等转换操作符来实现。

cppCopy codeint intValue = 42; double doubleValue = static_cast<double>(intValue); // 显式右值转换

右值转换在很多情况下是自动进行的,因为C++编译器会根据上下文来决定何时需要转换右值。但在某些情况下,特别是当你想显式地控制类型转换时,你可以使用显式的类型转换操作符。

需要注意,尽管右值转换是有用的特性,但在使用时要小心,以免引发不必要的类型错误和混淆。

35、右值引用

int &&将右值转换为左值

36、借用笔记♬:链接是将各个编译单元中的变量和函数引用与定义进行绑定,保证程序中的变量和函数都有对应的实体,若被调用函数未定义,就在此过程中会发现。编辑阶段创建和修改源程序;预处理阶段分析宏定义以及替换宏引用;编译过程是把源程序翻译为与之等价的目标程序。

37、条件运算符的优先级比赋值运算符的优先级高。

38、浮点数无法进行位运算

39、内存分配分为动态内存分配和静态内存分配,动态内存分配是在程序运行时分配内存,静态内存分配是在程序装入时分配内存

40、 c语言中不写返回值默认是int类型的数据

41、" A"是字符串常量,'A '是字符常量

42、mod是取余运算在汇编里面

43、a(&c)与(*a)(&c)在调用上是等价的  都等于fun(&c)

44、

(1)e前e后必有数,e后必定为整数 (浮点数)

(2)规范化的指数形式里面,小数点前面有且只有一位非零的数字。如1.2345e8

(3)十进制小数形式。他有数字和小数点组成,必须有小数点。例如(123.)(123.0)(.123)

45、有符号数与无符号数比较,会自动转换为无符号数

46、

#include <iostream> using namespace std; int main() { int a = 0x1234; //由于int和char的长度不同,借助int型转换成char型,只会留下低地址的部分 char c = (char)(a); if (c == 0x12) cout << "big endian" << endl; else if(c == 0x34) cout << "little endian" << endl; }

判断储存

首先十六进制和八进制如果以十进制输出的话需要求出他的原码因为他俩一开始是以补码存储的,所以需要转一下

47、uto 变量类型推演,

register 建议编译器将该变量放入cpu,

static 静态变量,

extern 声明变量,常用于多文件需要使用同一变量时

48、**根据C99规范, sizeof是一个编译时刻就起效果的运算符,在其内的任何运算都没有意义,

sizeof(i++); 在编译的时候被翻译成 

sizeof((i++的数据类型)) 也就是 sizeof(int); 不会执行i++了。

sizeof是运算符,它在编译时起作用,而不是运行时。

也就是说,在编译时,就得到了sizeof(int),运行时,i++根本没有执行过。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值