【Linux C 程序设计】(一)基础知识

来源:互联网 发布:淘宝客佣金查看 编辑:程序博客网 时间:2024/04/30 08:22

1.goto语句

#include<stdio.h>int  main(){  printf("Begin ....\n"); // goto Go;  printf("Continue ....\n");  Go:  printf("End ....\n");}

输出结果

[root@localhost workplace]# ./goto Begin ....Continue ....End ....


注意:goto语句程序本身也要运行。

 

2.优化控制结构

a.使用替换程序中的乘除法

加减法只占一个时钟周期,位运算和移位操作的执行速度和加减法接近。乘法需要5到6个时钟周期,除法执行最慢,大约需要50个时钟周期。

乘法都可以使用移位指令代替 a*13 = a<<3 + a +a<<2。除法则只有2的幂才能使用。


b.常量折叠

将常量结果计算好,但不易于阅读

c.使用数学公式代替

d.存储问题

x=x+1;

执行过程分三步

x+=1;

执行过程只有两步

e.分支优化,改变判断顺序

将判断可能性比较大的放在前面,减少判定次数

f.循环优化,一次性计算

对于循环中一次性计算,应当将其放置到循环外面

h.调用函数很费事,最后减少调用

i.不要将循环算子等高频率使用的变量设置为全局变量或者静态变量

 

3.全局变量,局部变量

局部变量存储在函数的栈上,栈消失,变量也消失

全局变量存储在固定的存储区

对于全局变量来说,如果一个全局变量未被初始化,其初始值有编译器自动设置为0。而局部变量存储在内存的堆栈中,定义之后,不会将其初始化为0,而是使用其占用内存空间原有的值,是一个随机值。

 

4.全局变量

a.c

#include<stdio.h>double a;void f(){a=-0.0;}


 

b.c

#include<stdio.h>void f(void);int a = 123;int b = 121;int main(){ f(); printf("a=%d,b=%d\n",a,b); return 0;}


 

在VS2010上运行结果为

Linux中结果

理由:运行f后,将4字节的a变成8字节,将b的值也清空

5.可变参数

int printf(const char* format,...);


 


 


 

 

 

 

 

 

 

 

 

 

 

 

 

0 0