c语言的笔记
下面把我这半年来记的一些C语言的笔记贴出来。
1 C语言中函数参数传递是按照“值传递”进行的,即单向传递。
2 函数原型:函数类型 函数名(参数类型,参数类型……),可以不必加参数名,因为操作系统不检查参数名。
3 数组作为实参传递,型参若也是数组声明,可以第一维不指定数组大小,此时这个数组已经退化为一个指针,因此数组长度需要在参数当中接收。局部引用型参数组名的时候,其实它已经不是数组而只是一个指针。
4 函数定义不可以嵌套
5 型参中的数组定义,可以不指定一维数组的大小,指定了也不起作用。C编译器对型参数组大小不做检查,只是将实参数组首地址传递给了型参。故,两个数组名的指针一致。两个数组共同占用一段内存单元。多为数组名作参数可以忽略一维数组的大小,但是不能忽略二维及高维的大小声明,C编译器不检查第一维的大小。
6 动态存储方式与静态存储方式:静态存储指程序运行期间分配固定的存储空间的方式,而动态存储是根据需要动态分配管理的方式。全局变量存储在静态存储区,而静态局部变量亦是如此。使用static声明的全局变量表示其作用域只是本文件当中,而不可以被其它文件使用 “extern”声明后 引用,同样的static型函数。
7 只有局部变量和型参可以作为寄存器变量。别问为什么,理由自己去想!
8 使用“extern”声明外部变量,编译时将外部变量分配在静态存储区。
9 使用“extern”声明一个外部变量,可以是本文件中的,此时适用的情况就是“适用处位于声明处之前”。或者是在其它文件中进行查找:extern int a; 或者 extern a; 查找先是在本文件当中进行的,然后是外部文件。
10 预处理命令,它们并非C语言的一部分。
11 a[i] 与 *(a+i)效率相同而内部处理是将 a[i]转化为 *(a+i);
12 java当中构造方法不能被子类继承,若子类需要调用父类带参构造方法需要使用 super()方法。正常编译器会自动调用父类的无参构造方法。显示的通过super()父类成员。
13 java当中构造方法的第一条语句可以为this调用,即通过适用this加参数,调用其它的构造方法。
14 C语言的数据类型大体可以分为四种:基本类型(整型、字符型、实型、枚举类型),构造类型(数组、结构体、共用体),指针类型,空类型。
15 在Turbo C中一个int型变量最大允许值32767,如果将其加1,则会溢出,变为-32768。
16 如果一个整常数后面加一个字母,u或U,则认为是unsigned int型。如12345u,在计算机中按照unsigned int 存储。存储单元中最高位不作为符号位,而用来存储数据。如果数字为123L,表示long int。
17 float 4个字节,有效数字6-7位。 double 8个字节,有效数字位数15-16位。
18 实型数据的舍入误差。%f为输出一个实数的格式符。看下面的程序:
main()
{
float a, b;
a=123456.789e5;
b=2+20;
printf("%f", b);
}
实型变量只能保证7位有效数字,后面的数字是无意义的,并不准确。此时输出a,b都为12345678848.000000 。类似的如果输出1.0/3*3,那么看到的输出并不等于1
实型常量,C编译系统作为双精度处理。
19 如果i=3,printf(“%d”, -i++),则先取i的后置自增,返回结果3,之后取负,输出虽然是-3,此时i为4.
20 变量“先定义后使用”原则的好处:确保程序变量名使用得正确,类型确定,在编译时就能为其分配相应的存储单元;有利于编译时进行运算的合法性检查。
21 如果 float a = 4.5; 那么 (int)a/1.5 结果为2.66……而不是3,这说明了运算的顺序先进行类型的转化在进行除运算。
c语言的笔记的更多相关文章
- HTML语言学习笔记(会更新)
# HTML语言学习笔记(会更新) 一个html文件是由一系列的元素和标签组成的. 标签: 1.<html></html> 表示该文件为超文本标记语言(HTML)编写的.成对出 ...
- JavaScript语言精粹笔记
JavaScript语言精粹笔记 掌握语言的每个特性可以让你出风头,但是并不推荐,因为一部分的特性带来的麻烦可能远超本身的价值.正如书中所言,坏的材料并不能雕刻出好的作品,要成为一名更好的程序员,要取 ...
- C语言盲点笔记1
寥寥数笔,记录我的C语言盲点笔记,仅仅为以前经历过,亦有误,可交流. 1.int* a和int *a有差别吗? 没有不论什么差别,都表示a是int指针 建议这么写int *a;这样明显一点 理由例如以 ...
- C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com
原文:C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | I ...
- 2017-04-21周C语言学习笔记
C语言学习笔记:... --------------------------------- C语言学习笔记:学习程度的高低取决于.自学能力的高低.有的时候生活就是这样的.聪明的人有时候需要.用笨的方法 ...
- 2017-05-4-C语言学习笔记
C语言学习笔记... ------------------------------------ Hello C语言:什么是程序:程序是指:完成某件事的既定方式和过程.计算机中的程序是指:为了让计算机执 ...
- GO语言学习笔记(一)
GO语言学习笔记 1.数组切片slice:可动态增长的数组 2.错误处理流程关键字:defer panic recover 3.变量的初始化:以下效果一样 `var a int = 10` `var ...
- Haskell语言学习笔记(88)语言扩展(1)
ExistentialQuantification {-# LANGUAGE ExistentialQuantification #-} 存在类型专用的语言扩展 Haskell语言学习笔记(73)Ex ...
- Go语言学习笔记十三: Map集合
Go语言学习笔记十三: Map集合 Map在每种语言中基本都有,Java中是属于集合类Map,其包括HashMap, TreeMap等.而Python语言直接就属于一种类型,写法上比Java还简单. ...
随机推荐
- 【移动开发】怎样自己定义ViewGroup
本文翻译自<50 android hacks> 按照惯例.先从一个样例说起. 非常easy,3张扑克牌叠在一起显示. 这个布局效果该怎样实现呢?有的同学该说了,这非常easy啊,用Rela ...
- mysql strace fsync,fdatasync
mysql> show create table y; +-------+------------------------------------------------------------ ...
- iOS多线程开发--NSThread NSOperation GCD
多线程 当用户播放音频.下载资源.进行图像处理时往往希望做这些事情的时候其他操作不会被中 断或者希望这些操作过程中更加顺畅.在单线程中一个线程只能做一件事情,一件事情处理不完另一件事就不能开始,这样势 ...
- android实现倒计时
前言 在打开爱奇艺等app的欢迎界面的时候,右上角有一个倒计时的控件.倒计时完了以后进入主界面.现在我们来实现这个功能. 方法一 利用java的类Timer,TimerTask还有android的H ...
- sqlserver临时表排序问题
在2005和2008中,如果将有序的记录插入临时表,则从临时表查看出来的记录是有序的(不使用Order by也是有序状态) 但从2012开始,即使插入的记录集是有序的,查看出来的结果变得无序了,需要依 ...
- ios NSMethodSignature and NSInvocation 消息转发
1.首先获取消息转发时连个函数内部具体内容 MARK:这里是拿[@"xxxxx" length]调用拿来举例说明 (lldb) po signature <NSMethodS ...
- 命令精解之DOS批处理
前言 最近对于批处理技术的探讨比较热,也有不少好的批处理程序发布,但是如果没有一定的相关知识恐怕不容易看懂和理解这些批处理文件,也就更谈不上自己动手编写了,古语云:“授人以鱼,不如授人以渔.”因为网上 ...
- IOS_OC_本地推送知识总结
知识点介绍 一. 推送通知介绍(了解) 二. 本地推送通知 本地通知的基本使用 本地通知的不常用属性 删除重复的通知 通知的处理1-跳转界面 通知的处理2-程序退出 分类的设置/快捷回复 一. 推送通 ...
- Spring+Maven+Eclipse构建Web工程
转载请注明出处:http://www.cnblogs.com/lidabnu/p/5657439.html 1 环境准备 下载Eclipse:http://www.eclipse.org/downlo ...
- 17_AOP入门准备_Salay案例(利用动态代理)
[案例分析] 查看Salary: 1.启动日志 2.启动安全性的框架 3.检查权限:如果有查看工资的权限,则查看工资,否则提示"权限不足" [工厂截图] [SalaryManage ...