1.安装visual studio(微软公司的一款开发工具),安装 MSDN (Microsoft Developer Network)帮助文档。
2.头文件中“”和<>的区别:“”是用户自定义头文件,文件在所建工程当前目录下,<>是系统自带头文件在include文件夹中,两者其本质差别是:搜索路径不同“”搜索路径率先在你所建工程下面搜索,然后才在系统文件中搜索,再在include中搜索。,而<>只在vistual studio 下的include里搜索。
3.#program once,效果等同于
#ifndef __xxx_
#define __xxx__
...
#endif
// __xxx__ ```...在头文件中用这种写法就是为了该头文件被重复包含时不会出现符合重定义的错误,更简单的替代方式就是#program once
4.大小端存储字节问题:本质就是存储高低字节的方式
大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;这和我们的阅读习惯一致。
小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低。
5.void也是数据类型,只不过是无类型的类型。
6.sizeof(),是运算符。
7.基本数据类型所占字节:和多少位的编译器有关系
32位编译器
char :1个字节
bool : 1个字节
空结构体:占1个字节
char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器)
short int : 2个字节
int: 4个字节
unsigned int : 4个字节
float: 4个字节
long: 4个字节
double: 8个字节
long long: 8个字节
unsigned long: 4个字节
注意:void a;错误无类型的类型,不占字节
void*a正确,因为指针所占字节是确定的4字节(32位)
8.++i ,i++:i++是先运算在++,++i是先++再运算(什么时候运算取决于编译器,不同的编译器有不同的编译方式,有的编译器以 ;为结束符再运算i++,有的编译器以 ,为结束符运算i++)
A:注意:i++遇到错误逻辑关系检测到0(错误的时候不会再进行计算)
#include<stdio.h>
int main()
{
int a = 10;
int b = 0;
int c = b && ++a;
printf("c =%d, a =%d\n",c,a);//c= 0, a = 10,a不会自增1
return 0;
}
B:遇到i++ ,++i ,i++,++i;时候遵循栈先进后出的原则,由于输出要从左至右,所以数据先是从右至左进入栈(取决于编译器的不同)
void main()
{
int a = 0;
int b = 1;
printf("%d %d %d %d\n",++a,a++,++a,a++);
// 2 1 1 0
// 4 2 2 0
printf("a = %d\n",a); //不同编译器有不同的结果
}