小标
2018-10-10
来源 :
阅读 1651
评论 0
摘要:本文主要向大家介绍了C/C++知识点之C语言特殊知识点解析,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。
本文主要向大家介绍了C/C++知识点之C语言特殊知识点解析,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。
1 数组1.1 概念
数组是指某种数据类型,在内存上按照顺序存储。中括号([ ])是数组的标识,中括号内的数值标识该种数据类型变量的个数,中括号也有取值的作用。
1.2 数组使用
int a[10]={1,2,3,4,5,6,7,8,9,0}; --数组的定义 int *p=&a[1]; --a[1],是取数组a在内存1位置的值,&a[1],是取a[1]的地址
则p[6]等于8 --p[6],是以&a[1]为起始位置,向上取第六位置的值。
1.3 整数数组清零
1.3.1 bzero()
只能清零。
1.3.2 memset()
可以设定为指定的值。但是,只会置每个字节的低位为指定值。例如:
int a[5] = {1,2,3,4,5}; memset(a,2,sizeof(a)); for(int i=0; i<5; i++){ printf("%d", a[i]); --打印的值为:10000000100000001000000010 }
2 存储类关键字
2.1 auto
只用于具有代码块作用域的变量声明中,修饰局部变量。
2.2 register
只能是局部变量,并且是CPU可以接受的类型,不能取址。可以大大提高运算效率。
2.3 static
(1)static修饰全局变量,只初始化一次,防止在其它文件也被使用。
(2)static修饰局部变量,函数执行完,static变量不会释放。
(3)static修饰函数,该函数只能在本文件使用。
2.4 extern
声明某变量或者函数可外部调用。
2.5 const
3 有符号整形和无符号整形的运算
int main(void) { unsigned int a = 6; int b = -20; char c; (a+b>6)?(c=1):(c=0);
return 0; }则c=1,但a+b=-14;如果a为int类型则c=0。
原来有符号数和无符号数进行比较运算时(==,<,>,<=,>=),有符号数隐式转换成了无符号数(即底层的补码不变,但是此数从有符号数变成了无符号数), 比如上面 (a+b)>6这个比较运算,a+b=-14,-14的补码为1111111111110010。此数进行比较运算时,被当成了无符号数,它远远大于6,所以得到上述结果。
4 原码、反码、补码
因为有符号的原码的真实值不准确,所以出现反码;因为-0这个特殊的值,所以出现的补码。所以,处理器计算的是补码。
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!
喜欢 | 0
不喜欢 | 0
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号