2013-7-11学习笔记

简介: 宏定义参数没有类型判断,宏定义在编译的时候就已经计算好了,所以效率比一般函数要高。 #define mul(a,b) ((a)*(b))   预处理指令 条件判断预处理指令,如果条件成立则预编译 #if 条件1 .

宏定义参数没有类型判断,宏定义在编译的时候就已经计算好了,所以效率比一般函数要高。

#define mul(a,b) ((a)*(b))  


预处理指令

条件判断预处理指令,如果条件成立则预编译

#if 条件1

..code1..

#else if 条件2

..code2..

#define NUM 10

#if NUM > 0

    printf("NUM>0");

#elif NUM==0

    printf("NUM=0");

#else

    printf("NUM<0");

#endif

    return0;


如果定义了某个宏,就预处理

#define MAX 10

#ifdef MAX

     ..code..

#endif

#ifndef MAX

     ..code..

#endif


在创建一个头文件的时候都写上,重新创建一个.h文件都会自动生成这么一段的

#ifndef include_Header_h

#define include_Header_h



#end if

这样才能放心的在main函数中引用这些头文件而不担心重复引用

局部变量和全局变量

void test()

{

    //全局变量和静态变量

    //静态变量static修饰的也是全局变量

    

    //b是一个局部变量,自动变量

    int b=0;

    b++;

    

    //C是一个局部变量,静态变量

    staticint c= 0;

    c++;    

    printf("b=%d,c=%d\n",b,c);


}

运行结果:

b=1,c=1;

b=1,c=2;

b=1,c=3;

解释:因为b变量是局部变量,生命周期随着函数的销毁而销毁,所以在每次调用test函数的时候,b变量都被重新创建,重新赋值为0,所以每次打印出来都是1;而c变量是static变量,它被创建以后生命周期是随着程序的结束而结束的,所以在第二次调用这个函数的时候,就不需要创建c变量了,只要在原来的基础上继续添加就行了!static变量并不是在编译的时候创建的,还是在运行的过程中创建的,虽然生命周期改变,但是作用范围是不变的。

寄存器变量(register)本身也是自动变量,当函数结束时候,寄存器变量消失,当寄存器不够用的时候,会自动变成自动变量



//一开始定义的p是指向一个静态区域,不可以改变*p了

    char *p="ABC";

    printf("%c",*p);

    *p="d";

    printf("%c",*p);


void func(int *a)跟void func(int a[100])是一样的效果

int k=sizeof(a);这里k是一个指针的大小结果:k=8;

函数的形参本身就 开辟了空间 大小跟形参没有关系,好比void func(int a[10000000])随便形参数组有多大,都是一个指针的大小,如果要再func函数中计算main函数中传过来的数组空间的大小,那只能是char形式的,用strlen(p)来计算(char *p)


//

int main(int argc, constchar * argv[])

{

    int a[]={2,3,4,5,6,7};

    int *p=&a[0];

    printf("%d ",*p);

    p=&a+1;

    printf("%d ",*(p-1));

    p=&a;

    printf("%d ",*p);

    printf("%d ",sizeof(&a));

    printf("%d ",sizeof(&a+1));

    p=(int *)(&a+1);

    printf("%d ",*(p-1));

    return0;

}

结果:2 7 2 8 8 7   这里&数组名 是指数组的整个大小


const 是常量


2010-7-11 - 蓬莱仙羽 - IT达人的博客

 

递归求N!
2010-7-11 - 蓬莱仙羽 - IT达人的博客
 
相关文章
|
Kubernetes 网络协议 程序员
k8s 学习笔记 - LimitRange 限制范围
k8s 学习笔记 - LimitRange 限制范围
240 0
|
开发者
整合的实现 | 学习笔记
快速学习整合的实现.
整合的实现 | 学习笔记
|
消息中间件 Dubbo 算法
总结|学习笔记
快速学习总结
总结|学习笔记
|
自然语言处理 流计算 开发者
termQuery | 学习笔记
快速学习 termQuery
|
机器学习/深度学习 算法 开发者
神经元模型| 学习笔记
快速学习神经元模型。
神经元模型| 学习笔记
|
人工智能 开发者
一点一世界 | 学习笔记
快速学习一点一世界
一点一世界 | 学习笔记
|
C++ 开发者 Python
|
存储 Java 开发者
BinaryTree|学习笔记
快速学习BinaryTree
BinaryTree|学习笔记
|
消息中间件 缓存 NoSQL
总结| 学习笔记
快速学习总结。
|
安全 Java 开发者
回顾 | 学习笔记
快速学习回顾,介绍了回顾系统机制, 以及在实际应用过程中如何使用。