linux下的c语言控制灯闪烁,Linuxl下C编程系列--C语言(容易疏忽的问题)l

编译预处理

三种预处理命令

1.宏定义

2.包含文件 #include

3.条件编译

定义 #define S(a,b) a*b

引用 S(a+c,b+c)

展开 a+c*b+c

条件编译

#define DEBUG //调试版本,在发布版本中把这句删除,那么程序中调试部分不会起作用

情况一:

#if常量表达式

程序段1

#else

程序段2

#endif

情况二:

#ifef 标识符       //是否已经定义

程序段1

#else

程序段2

#endif

常见:

#ifdef DUBUG

或者:

#ifndef

#endif

指针

指针函数:返回值为指针类型的函数

函数指针   int (*p)(); p是函数名,代表函数入口地址

例:

#include

main()

{

int max();

int (*p)();

int a,b,c;

p=max;

scanf("%d,%d",&a,&b);    //输入a.b。以逗号隔开

c=(*p)(a,b);

printf("a=%d,b=%d,max=%d",a,b,c);

}

int max(int x,int y)

{

int z;

if(x>y)

z=x;

else

z=y;

return z;

}

*p++ :*p,然后p+1;

*++p :p+1,然后取*p;

例:

#includemain()

{

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

int* p=a+3;

printf("%d,%d,%d\n",*p,*(p+1),*p+3);

}

输出结果是:4,5,7

结构体、共同体、位段

结构体

共同体:不能对共同体变量进行初始化,也不能将共同体变量作为函数参数,以及使用函数返回一个共同体数据,但是可以使用指向共同体变量的指针

typedef 定义已有类型的别名,记住:只是别名,不能创建新类型

typedef与#define有相似之处,但二者是不同的:前者是编译器在编译时处理的;后者是由编译预处理时处理,而且只能作简单的字符串替换。

位段结构:

有时,存储1个信息不必占用1个字节,只需要二进制的1个位就够用了。

注意:在windows下:

BOOL其实是整型,而bool类型是字节型。经测试:BOOL占4个字节,而bool只占1个字节

还有一点:为了和另外一些语言谦容,bool是C++的关键字,BOOL是API用的,MFC派生于API。所以在用MFC时,尽量不要动那些BOOL类型,至于bool型,一般修改后没什么特别的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值