Chinaunix首页 | 论坛 | 博客
  • 博客访问: 64109
  • 博文数量: 32
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 325
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-28 21:50
文章分类

全部博文(32)

文章存档

2011年(1)

2010年(6)

2009年(25)

我的朋友

分类: C/C++

2009-10-30 21:00:40

  1.C的数据类型
数据类型
(1)基本类型:整型,字符型,实型(浮点型)(单精度,双精度),枚举类型
(2)构造类型:数组类型,结构体类型,共用体类型
(3)指针类型
(4)空类型

2.变量名实际上时个符号地址,在编译时由系统给分配一个内存地址,与汇编一样

3.整型分为三种形式     一般整型占2字节
(1)十进制,如165
(2)八进制,以0开头,0165
(3)十六进制,以0x开头,如0x165
整型分为有符号,和无符号unsigned
整常量后面加一个字母u,认为是unsigned int 型,如12345u,加l或L,认为是long int 型,如123L

4.浮点数两种表示:十进制小数,如0.123。 指数形式,如123e3        一般float占4字节
单精度,双精度的有效数字都不同,计算时注意有效数字,大数加小数往往会丢失小数,另外,两个单精度数在计算时,系统总是会先转换成双精度再计算,提高了计算精度

5.字符型
‘a‘是字符常量,“a“是字符串常量,两种所占内存空间不同,后者比前者多占一个字节,即'\0'
可以使用转义字符,即'\65',为‘A’

6.两种类型转换
(1)运算时系统自动转换,如3+6.5     转换按照  字符型,整型,浮点型
       用赋值运算符时,如果是整型数据间的数据传送,按存储单元的存储方式直接传送
       如果赋值运算符两侧的类型不一致,在赋值时系统会自动转换
(2)强制类型转换 
      (double)a                (将a转换成double型)
     注意,强制类型转换符是很优先的

7.逗号表达式
表达式1,表达式2
求解过程:先求1,再求2,整个逗号表达式的值是2

8.字符数组与字符串的区别:参考P133  《高质量C\C++》
(1)字符数组就是元素为字符变量的数组,而字符串则是以'\0'为结束字符的字符数组
(2)字符数组可后面加'\0',也可不加,建议加上'\0',因为在对字符数组引用时,很多字符串库函数都是以结尾 '\0'来判断是否结束
(3)如果char array[]="hello"      //则数组元素为{'h','e','l','l','o','\0'},长度为6
            char array[]={'h','e','l','l','o'}    //则数组长度为5
       用字符串常量来初始化一个字符数组,数组的长度至少要比字符串常量的长度大1,因为要保存'\0'
(4)字符数组名是地址常量,而char *array  中的array是指针变量

9.关于函数
(1)在定义函数时如果不指定函数类型,系统会默认指定为int型

(2)“空函数
    如:dummy(){}  调用此函数,什么都没做。   程序设计时未编好函数,可以先占个位置。

(3)关于形参与实参
     C语言中,利用栈来保存局部变量,利用栈来传递参数
     所谓的调用函数时,系统为形参开辟内存空间,实际上是将参数压栈的栈空间

(4)函数的返回值          建议定义函数时指明函数类型,保持与返回值类型一致,无返回时应void
函数返回值是通过return;
一个函数可以有多个return;
如果函数值类型与return的类型不一致,系统会把返回值自动转换成函数值类型;
如果被调用函数没有返回值,带回的是个不确定的值,而不是不带回返回值;
为了明确表示“不带回值”,可以用“void”

(5)对函数的声明         建议:对函数一定要声明
对函数的声明主要是为了在编译时可以对调用函数的合法性进行检查
如果在函数调用之前,没有声明,系统会将第一次遇到该函数形式作为声明,并默认为int型
即C语言中函数调用之前没声明,编译也不回报错

(6)变量    建议:在定义全局变量时,首字母大写,如int Max
auto(局部变量)register(寄存器变量)   只定义函数内部变量
static   函数内:变量占用内存空间,离开函数,值保留,编译时即赋初值,默认为0(int,float)或空字符
           函数外:变量只限于本文件使用
extern  函数外   扩大作用范围    
一般全局变量都是extern,其他文件要引用时应先声明:extern  变量类型 变量
建议如果全局变量只用于本文件,则加上static,可以避免其他文件误用

(7)内外部函数
static 本文件内   函数只限用于本文件
extern 函数本质上时全局的,其他文件要引用时应先声明extern 函数()   (extern可以不写)

(8)关于变量与函数的思考
两者都是符号地址,于是两者本质上应该是相同的,这里的变量特指全局变量,而全局变量本质上作用域也应该是全局的,要用extern声明才能扩充作用域应该是编译时需要的

用static和extern来定义或声明变量及函数,其作用都是一样的

全局变量与静态局部变量 在程序载入内存初始化时就分配内存,就好像汇编里面的数据段一样,不过静态局部变量仅限于本函数调用

10.指针     建议:指针变量时危险的,应该养成定义变量后赋值的习惯
请记住,指针是一种数据类型,不过要带基类型
(1)用数组名作函数参数
实参数组名代表一个固定地址,或者说是指针型常量,而形参数组并不是一个固定的地址值,编译时是将其做指针变量处理,调用开始时,它的值等于实参数组起始地址。
即 int function(char ary[],int n) 等价于 int function(char *ary,int n)
实参数组需开辟内存空间,而形参数组只是个指针变量,不需要真正开辟内存空间

阅读(481) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~