读书《C与指针》笔记(未完,持续更新与整理中)
2017-02-07 15:21
197 查看
一、关于数组名。
1、eg: a[2] 中的a是一个指针常量,是不能改变的。
2、*(a + 2) == a[2], 在a + 2 中a + 2 改变的地址长度取决于申明数组的类型。
二、关于函数传值时的需要思考的对象
1、传输的效率。
2、是否需要加 const。
三、struct 和union
1、union通常是和enum 一起使用
eg:
struct people{
enum{hzr, hr,br} type;
union{
char hzr[32];
char hr[32];
char br[32];
};
};
四、对于我来说指针有些难和容易忘记的特殊语句的一些解释
1、int f()[];
这是一个非法语句,首先看第一个(),表示说f一个函数,返回值为一个数组。
2、int f[]();
这个一个非法语句。f后面是一个[],说明f是一个数组,返回值为一个 int () 函数。但由于数组的大小是确定的,而函数值的大小是补确定的,所以这种申明是不正确的。
1、eg: a[2] 中的a是一个指针常量,是不能改变的。
2、*(a + 2) == a[2], 在a + 2 中a + 2 改变的地址长度取决于申明数组的类型。
二、关于函数传值时的需要思考的对象
1、传输的效率。
2、是否需要加 const。
三、struct 和union
1、union通常是和enum 一起使用
eg:
struct people{
enum{hzr, hr,br} type;
union{
char hzr[32];
char hr[32];
char br[32];
};
};
四、对于我来说指针有些难和容易忘记的特殊语句的一些解释
1、int f()[];
这是一个非法语句,首先看第一个(),表示说f一个函数,返回值为一个数组。
2、int f[]();
这个一个非法语句。f后面是一个[],说明f是一个数组,返回值为一个 int () 函数。但由于数组的大小是确定的,而函数值的大小是补确定的,所以这种申明是不正确的。
相关文章推荐
- 只能在执行Render() 的过程中调用 RegisterForEventValidation
- svn 绿色勾勾消失,文件与svn服务器断开
- Linux下搭建Python2.7环境
- 后台服务后台遇到的坑整理,以及做活动的优化经历,redis需要读写分离吗以及其他问题
- Openstack windows server2003R2 镜像制作流程
- 多线程 互斥锁
- Two pointers
- SSH框架搭建和整合(struts2、spring4、hibernate5)
- 删数问题
- Java HashMap源代码详解
- PHP实现经典算法
- 使用log4j切分tomcat的catalina.out输出文件
- infer构建项目失败
- ibatis与spring整合
- vue2路由异步加载(懒加载)的实现
- &和&&的区别
- 别人家的代码
- 总结hibernate框架的常用检索方式
- JAVA设计模式 -- 命令模式
- magento2 后台汉化以及前台语言包