首页 > 代码库 > c 深度剖析 1
c 深度剖析 1
1.register
register 变量必须是能被CPU寄存器所接受的类型(32 位机器 寄存器为32位),必须是单个的值,长度小于或等于整形的长度
不能用&来获取register 变量的地址。
2static
static 在代码块外或函数声明 用于更改标识符的链接属性
static 在代码块内的变量定义 用于更改存储类型
1 2 3 4 5 6 7 8 9 | static int c; //链接属性为internal , 存储属性:静态,作用域:整个文件作用域 int d( int e1, int e2) //e1 e2 原型作用域,即 e1 和e2 不能相同 { static int g=20; //代码块内 链接属性为无, 存储属性:静态,作用域:整个函数作用域 } |
static
int
c;
//链接属性为internal , 存储属性:静态,作用域:整个文件作用域
static
int
g=20;
//代码块内 链接属性为无, 存储属性:静态,作用域:整个函数作用域
g在程序运行完后,不会被销毁,重新调用函数,g不会再被初始化。
3.c的编程规范(部分)
1.变量名要可读
2.注意字母l和数字1,字母o和数字0;
3.宏定义,枚举类型,只读变量采用大写命名。
4,单字符变量名尽量不要用。
4.sizeof
sizeof 为c语言中32个关键字之一。
1 2 3 4 5 6 7 8 9 10 | #include <stdio.h> void main() { double i=1.1; sizeof ( double ); //正确 sizeof (i); //正确 sizeof double ; //错误 sizeof i; //正确 } |
sizeof i;//正确说明sizeof 为关键字而不是函数
一般应用时都加()。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #include <stdio.h> void func( int b[3]) { printf ( "%d \n" , sizeof (b)); } void main() { double b[3]={1,2,3}; func(b); printf ( "%d \n" , sizeof (b)); printf ( "%d \n" , sizeof (b[1])); printf ( "%d \n" , sizeof (&b)); printf ( "%d \n" , sizeof (&b[1])); } |
sizeof
(b) 返回的是数组的大小以4个字节为单位,
3个double类型 ,故为24
sizeof
(b[1])返回的是double类型 故为 8
void
func(
int
b[3])
{
printf
(
"%d \n"
,
sizeof
(b));
}
说明参数传递的是指针
printf
(
"%d \n"
,
sizeof
(&b));
printf
(
"%d \n"
,
sizeof
(&b[1]));
均为指针,故为4
1 2 | sizeof ( int ) *q 求int的字节数后 乘q *在此处为乘法符号 sizeof ( int *q)求指针的字节数 |
5 if else
float变量与 0比较
1 | if (a!=0)不应该这么写, |
1 | if ((a>=-EPSINON)&&(a<=EPSINON)应该这样写 |
指针变量与零值比较
1 | if (NULL==p) |
if else 语句书写时注意
1.一般将常量放在前面,这样如果将== 错写成 =,则成了赋值语句,给常量赋值是非法的,故可以检查出错误。
2,if 后不管有多少条语句,都要加{}
3.将发生概率大的写下前面
6swith case
1 case 后只能为 字符型或整型的常量或常量表达式。
2 每种情况都应该写入case 语句,不要将 最后一种情况写入 default语句
来自为知笔记(Wiz)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。