C程序设计语言——学习记录
2014-03-11 09:38
246 查看
第一章
1. C语言是值传递,因此被调函数中是无法修改主调函数中传递下来的参数的值;补充信息:除值传递外还有引用传递:&var。这样传递的就是变量的地址,因此可在被调函数中修改该变量的值。
2,.extern关键字用于申明外部变量:
当全局变量定义在函数的后面,那么,当该函数使用该变量时就需要extern type var_name;来进行申明。
当全局变量定义在被使用的函数之前,则申明可省略;
当一个变量再file1中定义,却要在file2中使用时,file2就需要通过extern来申明这个外部变量。很多时候,会把导出给其他file用的变量或函数放到头文件中。
3. auth variables自动变量也即local variable局部变量:
其含义是指该变量在进入函数后创建,而其生命周期随着函数的执行结束而消亡
4.main函数的返回值:
为0 表示正常返回,非0表示不正常的返回或者有错误的返回
5.EOF表示end of file,在Linux下是通过Ctrl-D来表示,其对应的int类型的值为-1.
EOF是在stdio.h的文件中定义的:
/* End of file character.
Some things throughout the library rely on this being -1. */
#ifndef EOF
# define EOF (-1)
#endif
在Linux系统之中,EOF根本不是一个字符,而是当系统读取到文件结尾,所返回的一个信号值(也就是-1)
Linux中,在新的一行的开头,按下Ctrl-D,就代表EOF(如果在一行的中间按下Ctrl-D,则表示输出"标准输入"的缓存区,所以这时必须按两次Ctrl-D);Windows中,Ctrl-Z表示EOF。(顺便提一句,Linux中按下Ctrl-Z,表示将该进程中断,在后台挂起,用fg命令可以重新切回到前台;按下Ctrl-C表示终止该进程。)
6.赋值表达式语句本身也是有值的,其值为等号左边的变量的取值,如:while ((c = getchar()) != EOF).....
7.预处理器包括三方面:文件包含;宏替换(#define .....);条件包含
同时, 宏替换#define name text这种又叫做符号常量(应该是指其中的name)
8.!= 的优先级大于=
赋值运算符的优先级最低
C优先级(来自百度百科):
优先级 | 运算符 | 名称或含义 | 使用形式 | 结合方向 | 说明 |
1 | [] | 数组下标 | 数组名[常量表达式] | 左到右 | |
() | 圆括号 | (表达式)/函数名(形参表) | |||
. | 成员选择(对象) | 对象.成员名 | |||
-> | 成员选择(指针) | 对象指针->成员名 | |||
2 | - | 负号运算符 | -表达式 | 右到左 | 单目运算符 |
(类型) | 强制类型转换 | (数据类型)表达式 | |||
++ | 自增运算符 | ++变量名/变量名++ | 单目运算符 | ||
-- | 自减运算符 | --变量名/变量名-- | 单目运算符 | ||
* | 取值运算符 | *指针变量 | 单目运算符 | ||
& | 取地址运算符 | &变量名 | 单目运算符 | ||
! | 逻辑非运算符 | !表达式 | 单目运算符 | ||
~ | 按位取反运算符 | ~表达式 | 单目运算符 | ||
sizeof | 长度运算符 | sizeof(表达式) | |||
3 | / | 除 | 表达式/表达式 | 左到右 | 双目运算符 |
* | 乘 | 表达式*表达式 | 双目运算符 | ||
% | 余数(取模) | 整型表达式/整型表达式 | 双目运算符 | ||
4 | + | 加 | 表达式+表达式 | 左到右 | 双目运算符 |
- | 减 | 表达式-表达式 | 双目运算符 | ||
5 | << | 左移 | 变量<<表达式 | 左到右 | 双目运算符 |
>> | 右移 | 变量>>表达式 | 双目运算符 | ||
6 | > | 大于 | 表达式>表达式 | 左到右 | 双目运算符 |
>= | 大于等于 | 表达式>=表达式 | 双目运算符 | ||
< | 小于 | 表达式<表达式 | 双目运算符 | ||
<= | 小于等于 | 表达式<=表达式 | 双目运算符 | ||
7 | == | 等于 | 表达式==表达式 | 左到右 | 双目运算符 |
!= | 不等于 | 表达式!= 表达式 | 双目运算符 | ||
8 | & | 按位与 | 表达式&表达式 | 左到右 | 双目运算符 |
9 | ^ | 按位异或 | 表达式^表达式 | 左到右 | 双目运算符 |
10 | | | 按位或 | 表达式|表达式 | 左到右 | 双目运算符 |
11 | && | 逻辑与 | 表达式&&表达式 | 左到右 | 双目运算符 |
12 | || | 逻辑或 | 表达式||表达式 | 左到右 | 双目运算符 |
13 | ?: | 条件运算符 | 表达式1? 表达式2: 表达式3 | 右到左 | 三目运算符 |
14 | = | 赋值运算符 | 变量=表达式 | 右到左 | |
/= | 除后赋值 | 变量/=表达式 | |||
*= | 乘后赋值 | 变量*=表达式 | |||
%= | 取模后赋值 | 变量%=表达式 | |||
+= | 加后赋值 | 变量+=表达式 | |||
-= | 减后赋值 | 变量-=表达式 | |||
<<= | 左移后赋值 | 变量<<=表达式 | |||
>>= | 右移后赋值 | 变量>>=表达式 | |||
&= | 按位与后赋值 | 变量&=表达式 | |||
^= | 按位异或后赋值 | 变量^=表达式 | |||
|= | 按位或后赋值 | 变量|=表达式 | |||
15 | , | 逗号运算符 | 表达式,表达式,… | 左到右 | 从左向右顺序运算 |
这种情况适用于malloc,当在写程序时,忘记#include <mallo.c>时,默认malloc返回的类型为int类型,而int和指针类型在进行转换时有可能出错;当包含相应头文件后,malloc返回类型为void *,空指针类型是可以转化为任何其他类型的指针。所以一般建议在C中malloc返回void *时直接赋给其他指针类型,不需要强制类型转换。但是加上强制类型转换也没错。
相关文章推荐
- 学习:程序设计语言——编译原理(一、引论)
- C_PlusPlus学习笔记 - 3_类与对象 (C++语言程序设计【第三版】 郑莉等,清华大学出版社)
- 记录学习点滴-《Windows 程序设计》-1-1
- 学习程序设计语言到底学的是什么?
- C程序设计语言(K&R)学习笔记--5.extern小结
- Go语言学习记录之一(返回指针与返回值的区别)
- 马上要学习一门新的语言了,并且直接做一个项目,我要在这记录我学习的过程,加油
- JavaScript总结记录(学习JavaScript高级程序设计第三版)
- go语言学习-未分类的一些记录
- 记录学习点滴-《Windows 程序设计》-3-1
- [Javascript 高级程序设计]学习心得记录5 操作符和语句
- C程序设计语言 学习总结
- 【C程序设计语言(第二版)学习】单词计数 方法
- C程序设计语言(K&R)学习笔记--7.include,define,ifndef综合应用demo
- [Javascript 高级程序设计]学习心得记录 函数参数传递与引用
- 汇编语言学习记录--第一个汇编程序
- C程序设计语言(K&R)学习笔记--8.结构体
- perl语言学习记录
- c语言基础学习记录第一天
- C程序设计语言学习笔记(二)