C语言杂记
来源:互联网 发布:张碧晨红玫瑰网络链接 编辑:程序博客网 时间:2024/05/17 01:40
一、C语言自带的宏定义
1.__LINE__:表示正在编译文件的行号
2.__FILE__:表示正在编译文件的名字
3.__DATE__:表示编译时刻的日期字符串
4.__TIME__:表示编译时刻的时间字符串
5.__STDC__:判断该文件是不是定义成标准C程序
6.sizeof在编译是生效
二、typedef定义
1.typedef int sss[10]//定义一个新的关键字,sss,它定义的一个变量为int[10]类型的。
2.typedef int (*FUN)(int ,int );//第一个FUN类型,FUN,它定义的一个变量为一个函数指针,这个函数返回的是int类型,参数为两个int类型。
三、定义变量的格式
a) 一个整型数
b) 一个指向整型数的指针
c) 一个指向指针的的指针,它指向的指针是指向一个整型数
d) 一个有10个整型数的数组
e) 一个有10个指针的数组,该指针是指向一个整型数的
f) 一个指向有10个整型数数组的指针
g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数
h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数
答案是:
a) int a;
b) int *a;
c) int **a;
d) int a[10];
e) int *a[10];
f) int (*a)[10];
g) int (*a)(int);
h) int (*a[10])(int);
四、语句杂记
1.continue和break如果工作在嵌套循环中,永远只对内层循环起作用。在for语句中,continue的作用是跳过其他语句,直接执行(for(;;i++))i++ 操作。
如果continue在switch中,没有作用;如果在循环内的switch中,作用于循环。
2.常量表达式:编译时求值的表达式,它不能是任何变量。
3,switch中的case标签,并不是把代码划分为几个部分,只是确定语句列表的进入点。
5.(*(void(*u) ())0)();这是《C Traps and Pitfalls》这本经典的书中的一个例子。
下面我们就来分析分析:
第一步:void(*) (),可以明白这是一个函数指针类型。这个函数没有参数,没有返回值。
第二步:(void(*) ())0,这是将0 强制转换为函数指针类型,0 是一个地址,也就是说一
个函数存在首地址为0 的一段区域内。
第三步:(*(void(*) ())0),这是取0 地址开始的一段内存里面的内容,其内容就是保存
在首地址为0 的一段区域内的函数。
第四步:(*(void(*) ())0)(),这是函数调用。
好像还是很简单是吧,上面的例子再改写改写:
(*(char**(*) (char **,char **))0) ( char **,char **);
待续。。。
- 51C语言杂记
- c语言杂记
- C语言杂记
- C语言编程杂记
- C语言杂记
- C语言杂记1
- C语言笔记杂记
- C语言杂记.md
- C语言数据类型杂记
- C语言指针杂记
- C语言杂记1
- C语言 数据结构 杂记
- c语言mysql编程杂记
- C 语言学习(杂记)
- C语言杂记(1)
- 黑马程序员------c 语言杂记
- c语言学习中的杂记
- c语言日常杂记2
- SQLite效率评测!
- jBPM几个服务
- android 显示pdf文件内容
- STM32 的三种不同启动模式
- android 屏幕方向切换 锁定方向
- C语言杂记
- java反射机制
- 2012年关于工作和学习的总结
- Flash IOS APPs Cookbook
- 数据挖掘:Top 10 Algorithms in Data Mining(二)K-Means算法
- ASIHTTPRequest 详解, http 请求终结者
- 如何使ofc2的Y轴支持中文
- 使用MAXDOP重复利用多处理器启用SQL Server数据压缩功能
- 假如我来架构12306网站(二) - 浅谈系统需求调研