牛客:01问题

1.关于sizeof(void)

sizeof(void*)准确的说,编译器的目标平台有关。如果目标平台是32位的,那么sizeof(void*)就是4,如果是64位的,那么sizeof就是8,如果是16位的,就是2

 

 

2.运算符顺序

初等运算符(()[]->.)>单目运算符>算术运算符>逻辑运算符>条件运算符(三目运算符)>赋值运算符>逗号运算符。        

例子:t=a*=a>b?a:b;

?:运算符优先级高于*=和=运算符,所以先计算?:的值

 

5.

“-6.2e”的意思:“6”表示输出的宽度为6个字符宽,如果整数部分超出,则按实际倍数输出。“.2”表示输出2位小数(四舍五入),不足时后面添0;对字符串,表示截取2个字符。“e”表示用指数形式输出。“-”表示在数据不足指定位数时,采用左对齐方式,即数字(字符)往左靠。默认为右对齐。 

例子:218.83指数表示,2位小数为 :2.19e+02

实型常量又称实数或浮点数。在C语言中可以用两种形式表示一个实型常量。 

小数形式

        小数形式是由数字和小数点组成的一种实数表示形式,例如0.123、.123、123.、0.0等都是合法的实型常量。 

        注意:小数形式表示的实型常量必须要有小数点。 

指数形式

        这种形式类似数学中的指数形式。在数学中,一个可以用幂的形式来表示,如2.3026可以表示为0.23026×10^1 2.3026×10^0 23.026×10^-1等形式。在C语言中,则以“e”或“E”后跟一个整数来表示以“10”为底数的幂数。2.3026可以表示为0.23026E1、2.3026e0、23.026e-1。C语言语法规定,字母e或E之前必须要有数字,且e或E后面的指数必须为整数。如e3、5e3.6、.e、e等都是非法的指数形式。注意:在字母e或E的前后以及数字之间不得插入空格。 

        程序运行的过程中,其值不能被改变的量称为常量。常量有不同类型,其中12、0、-5为整型常量。'a''b'为字符常量。而4.6、-8.7则为实型常量。 

        一个实型常量可以赋给一个 float 型、double 型或 long double 变量。根据变量的类型截取实型常量中相应的有效位数字。 

3.局部变量与全局变量的区别

局部变量:定义在函数体内部的变量,作用域仅限于函数体内部。离开函数体就会无效。再调用就是出错

全局变量:定义所有的函数外部定义的变量,它的作用域是整个程序,也就是所有的源文件,包括.c和.h文件。

1. 作用域不同:全局变量的作用域为整个程序,而局部变量的作用域为当前函数或循环等

2. 内存存储方式不同:全局变量存储在全局数据区中,局部变量存储在栈区

3. 生命期不同:全局变量的生命期和主程序一样,随程序的销毁而销毁,局部变量在函数内部或循环内部,随函数的退出或循环退出就不存在了

4. 使用方式不同:全局变量在声明后程序的各个部分都可以用到,但是局部变量只能在局部使用。函数内部会优先使用局部变量再使用全局变量
 

注:局部变量可以与全局变量重名,但是局部变量会屏蔽全局变量。要使用全局变量,需要使用::。在函数体内引用变量会用到同名的局部变量而不是全局变量,对于一些编译器来说,在同一个函数体内可以定义多个同名的局部变量。例如我们可以在一个函数内部,在两个循环中都定义同名的局部变量i,而局部变量i的作用域在那个循环体内
 

(1)static用途

static:可以声明静态全局,局部变量,声明静态函数,不可声明静态外部类

链接:https://www.nowcoder.com/questionTerminal/4e41a08bc11046eca723a475811e9296?toCommentId=1506949
 

static变量也称作静态变量,静态变量和非静态变量的区别是:

    静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。

    而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。

4.

sizeof(double)表示的是在计算机中表示双精度型数据所需要的位数,这个人位数就是整数

 

 

5.枚举

enum中:首元素不赋值的话,默认为0;后一个元素不赋值的话比前一个元素大1

 

6.二义性宏的定义

例子:

#define SQ(a) a*a
main()
{

int i, j = 2;
i = SQ(2+2);

}

通过以上,你想得到 i = 4*4 = 16, 
而实际确是被解析为 i = 2+2*2+2 = 8
2、解决问题
#define SQ(a) (a)*(a)

则不会产生二义性。

宏替换不占用运行时间,只占用编译时间

 

7.默认值

1.在具有多个参数的函数中指定默认值时,默认参数都必须出现在不默认参数的右边,一旦某个参数开始指定默认值,它右边的所有参数都必须指定默认值。 

2.在调用具有默认参数的函数时,若某个实参默认,其右边的所有实参都应该默认。

 

8.C中关键字volatile

volatile int i=10; 
int j = i; 
... 
int k = i; 

volatile 告诉编译器i是随时可能发生变化的,每次使用它的时候必须从i的地址中读取,因而编译器生成的可执行码会重新从i的地址读取数据放在k中。 

volatile 影响编译器编译的结果,指出,volatile 变量是随时可能发生变化的,与volatile变量有关的运算,不要进行编译优化,以免出错,(VC++ 在产生release版可执行码时会进行编译优化,加volatile关键字的变量有关的运算,将不进行编译优化。)。

其中编译器编译优化是:
由于编译器发现两次从i读数据的代码之间的代码没有对i进行过操作,它会自动把上次读的数据放在k中。而不是重新从i里面读。这样以来,如果i是一个寄存器变量或者表示一个端口数据就容易出错,所以说volatile可以保证对特殊地址的稳定访问,不会出错。

 

10.头文件

1,系统自带的头文件用尖括号括起来,这样编译器会在系统文件目录下查找。 

#include <xxx.h> 
2,用户自定义的文件用双引号括起来,编译器首先会在用户目录下查找,然后在到C++安装目录(比如VC中可以指定和修改库文件查找路径,Unix和Linux中可以通过环境变量来设定)中查找,最后在系统文件中查找。 
#include “xxx.h”

11.struct与class两种类型的区别

c++:如果没有标明成员函数或者成员变量的访问权限级别,在strcut中默认的是public,而在class中默认的是private

c#: 如果没有标明成员函数或者成员变量的访问权限级别,struct和class中都是private的。struct和class的区别是struct定义的值类型,值类型的实例在栈上分配内存,而calss定义的是引用类型,引用类型的实例在堆上分配内存

12.字符串

c/c++ 中每个字符串都以字符'\0'作为结尾。串:即可链式存储,也可顺序存储。串为一种特殊的线性表

13.

在网络编程中,如果URL参数中包含特殊字符,如空格,'#'等,可能导致服务器无法获取正确的参数值,我们需要将这些特殊字符转化成服务器可以识别的字符。

14.indexOf

查找一个字符串中,第一次出现指定字符串的位置
比如str.indexOf(",") 查找str中第一次出现逗号的位置

15

 

>               输出重定向到一个文件或设备 覆盖原来的文件
>!              输出重定向到一个文件或设备 强制覆盖原来的文件
>>             输出重定向到一个文件或设备 追加原来的文件
<               输入重定向到一个程序 

16.科学技术法

输入:scanf("%[^E]E%d", A, &expo);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值