C专家编程学习 1
1.C语言的基本数据类型直接与底层硬件相对应。
2#define 是可能出现问题
1
2
3
4
5
|
#define a(y) a_ex(y) a(x)被扩展为 a_ex(x) #define a (y) a_ex(y) a(x)被扩展为 (y) a_ex(y)(x) |
#define宏的用法
1.简单宏定义
1
|
#define a y |
将文件中的 a 全部换成 y
为了避免出现问题,要将宏展开,根据运算符的优先级判断是否是需要的运算顺序。
2.带参数的宏定义
1
2
|
#define a(y) a_ex(y) a(x)被扩展为 a_ex(x) |
#define a(y) a_ex(y) 中的a(y)的中间不能带空格否则成了简单的宏替换了
1
2
|
#define a (y) a_ex(y) a(x)被扩展为 (y) a_ex(y)(x) |
有空格,为简单的宏替换, a 换成 (y) a_ex(y)
a(x)替换后成了(y) a_ex(y)(x)
3.const
1
2
3
4
5
6
7
8
|
#include <stdio.h> void main() { char *pa; const char *pb; pa=pb; } |
1
|
C:\Documents and Settings\CHEN\桌面\ff\main.c|7|warning: assignment discards 'const' qualifier from pointer target type [enabled by default ]| |
1
2
3
4
5
6
7
8
|
#include <stdio.h> void main() { char *pa; const char *pb; pb=pa; } |
赋值合法
两操作数都是指向有限定符或无限定符的指针,则左边的指针所指向的类型必须具有右边所指向类型的全部限定符。
pa 为指向char 类型的指针,pb 是指向const char 类型的指针限定符为const
pa=pb 左边限定符为无,右边为const 不符合规则的。
pb=pa 左边限定符为const ,右边限定符为无,左边具有右边的全部限定符,故是符合规则的。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#include <stdio.h> void main() { char *pa; const char *pb; char **pc; const char **pd; pb=pa; pc=&(pa); pd=&(pb); pd=pc; } |
pc为指针,指针指向指针,指针指向char
pd为指针,指针指向指针,指针指向const char
pc pd 指向的均为没有限定符的指针,且该指针指向的类型不一样。
4.算术转换
整型升级
int char short int型位段,,包括他们的有符号和无符号变型,以及枚举类型,在表达式中转化为 int 或 unsiged int
寻常算术转换
C专家编程学习 1的更多相关文章
- C语言学习书籍推荐《C专家编程Expert C Programming Deep C Secrets》下载
Peter Van Der Linden (作者) <C和C++经典著作 C专家编程Expert C Programming Deep C Secrets>展示了C程序员所使用的编码技巧, ...
- c专家编程摘录
C专家编程摘录 c操作符的优先级 有时一些c操作符有时并不会像你想象的那样工作. 下方表格将说明这个问题: 优先级问题 表达式 期望的情况 实际情况 . 优先级高于* *p.f (*p).f *(p. ...
- <<c专家编程>>笔记
C专家编程摘录 c操作符的优先级 有时一些c操作符有时并不会像你想象的那样工作. 下方表格将说明这个问题: 优先级问题 表达式 期望的情况 实际情况 . 优先级高于* *p.f (*p).f *(p. ...
- linux编程学习
linux编程学习 工具篇 “公欲善其事,必先利其器”.编程是一门实践性很强的工作,在你以后的学习或工作中,你将常常会与以下工具打交道, 下面列出学习 C 语言编程常常用到的软件和工具. (一)操作系 ...
- 现代3D图形编程学习-基础简介(3)-什么是opengl (译)
本书系列 现代3D图形编程学习 OpenGL是什么 在我们编写openGL程序之前,我们首先需要知道什么是OpenGL. 将OpenGL作为一个API OpenGL 通常被认为是应用程序接口(API) ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- 现代3D图形编程学习-基础简介(2) (译)
本书系列 现代3D图形编程学习 基础简介(2) 图形和渲染 接下去的内容对渲染的过程进行粗略介绍.遇到的部分内容不是很明白也没有关系,在接下去的章节中,会被具体阐述. 你在电脑屏幕上看到的任何东西,包 ...
- 现代3D图形编程学习-基础简介(1) (译)
本书系列 现代3D图形编程学习 基础简介 并不像本书的其他章节,这章内容没有相关的源代码或是项目.本章,我们将讨论向量,图形渲染理论,以及OpenGL. 向量 在阅读这本书的时候,你需要熟悉代数和几何 ...
- 现代3D图形编程学习-环境设置
本书系列 现代3D图形编程学习 环境设置 由于本书中的例子,均是基于OpenGL实现的,因此你的工作环境需要能够运行OpenGL,为了读者能够更好的运行原文中的示例,此处简单地介绍了linux和win ...
随机推荐
- routeProvider
In a previous post about testing I mentioned that route resolves can make authoring unit tests for a ...
- POJ 2480 求每一个数对于n的最大公约数的和
这里是枚举每一个最大公约数p,那么最后求的是f(n) = sigma(p*phi(n/p)) phi()为欧拉函数 这里可以试着算一下,然后会发现这个是积性函数的 那么只要考虑每一类质数分开算, ...
- mysql一次添加多条记录
inisert into tabale (name,pwd) values ("jom","123"),("tom","123&q ...
- “更高效率:标准化+简约风+移动化”--K2 BPM老客户交流会
主题:工作流主数据标准化和移动工作流带来的企业沟通建设机会 嘉宾:李瑞延(盛大网络IT总监) 公司管理需要更好的工作流 -为决策提供依据 通过对各级业务公司各类流程数据的获取与分析,为管理决策提供必要 ...
- 火狐和IE的window.event对象详解(转载)
FF的FIREBUG,不仅能测试JS还能检查CSS错误,是一般常用的. 但它主要检查FF方面的错误,对IE就无能为力了. 要测试IE,就用ieTester,它可以测试IE几乎所有版本(1.0恐怕也用不 ...
- vim的编码设置
VIM的相关字符编码主要有三个参数 fencs: 它是一个编码格式的猜测列表.当用vim打开某个文件时,会依次取这里面的编码进行解码,如果某个编码格式从头至尾解码正确,那么就用那个编码 fenc:它是 ...
- [Swift2.0系列]Defer/Guard 基础语法
1.Defer Swift2.0中加入了defer新语法声明.defer译为延缓.推迟之意.那么在Swift2.0中它将被应用于什么位置呢?比如,读取某目录下的文件内容并处理数据,你需要首先定位到文件 ...
- 【转发】linux yum命令详解
linux yum命令详解 yum(全 称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包管理, ...
- VMWare三种工作模式 :bridge、host-only、nat
VMWare提供了三种工作模式,它们是bridged(桥接模式).NAT(网络地址转换模式)和host-only(主机模式).要想在网络管理和维护中合理应用它们,你就应该先了解一下这三种工作模式.这里 ...
- jQuery 自定义扩展,与$冲突处理
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...