




如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
1*运算符a*b表示乘法运算,*a表示取内容运算(*与&对应) 关于定义指针类型变量的讨论:int*a理解:*a表示一个整形变量所以a表示一个指向整型变量的指针。类似的有:int(*a)(int)由于()优先级大于*(int)表示一个整型参数的函数(*a)表示对a取内容后得到一个返回整型数据的函数,因此表示一个指向函数的指针变量,即函数指针。int*a(int)表示对函数 a(int)的返回值取内容后得到一个整型变量,因此函数的返回值是一个指向整型变量的指针。 int(*a)[n]表示表示对a取内容后得到一整型数组,因此a表示一个指向数组首地址的指针。 本质上按照取内容运算来理解指针的声明。 2不同类型的数据运算时按照下列形式进行格式转换 charshort到int到unsinged到long到double float到double 进行各种运算时编译器会进行自动的形式转换,包括数学逻辑运算等 注意使用不同类型数据运算时要十分小心(c中的运算是很丰富的各种符号都是运算,强制类型转换只能得到一个中间类型的变量,函数调用时要进行必要的转换保证形参实参类型一致) 常量数据就是在程序中直接写出值的数据或是由#defign定义。定义常量时注意:定义整型常量写成整数定义实数常量写成是实数必要时候加上后缀。 c的一个原则:从左到右尽可能多的把多个字符按照一个运算符来处理如:a+++b表示(a++)+b 3全局变量与局部变量(作用域)动态变量与静态变量(生存期就是存储方式包括:autostaticregisterextern) 定义在函数体内部的变量是局部变量程序运行时只有调用该函数局部变量才有效否则没有意义 定义在函数体外部的变量是全局变量在整个c文件中都有效 动态变量的存储区域是随着程序的执行不断动态分配释放的,静态变量的存储区域是随着程序的执行事静止不变的。 auto是c默认的存储方式占用动态变量的存储区域函数执行时分配内存运行结束内存被释放 static占用动态变量的存储区域随着程序的运行一直存在。 extern声明其他文件的外部变量 静态外部变量staticinta表示a是外部变量只能在本文件使用。 全局变量都是静态的!! 4逻辑变量进行运算时会自动优化到最少的运算步骤,例如 if(a&&b&&c&&d) .... else ... abcd只要顺序出现一个0逻辑运算就会停止。或运算一样只要顺序出现一个1逻辑运算就会停止 可以使用prinft()观察程序执行的步骤进行优化。 条件操作a?b:c若a为真不去计算c否则不去算b #define预处理相当于复制,很死板机械化的一种方式。 关于c中数据类型的讨论看书上认真体会!! 引用外部函数是要完声明extern返回值类型函数名(参数列表)!! c中没有专门的赋值语句,实现赋值的方式是通过表达式,a=x+1变量a的道德是表达式x+1的值x+1;的结果就是得到一个值但如果单独存在就没有什么意义,但有些表达式是可以利用的。 swich(expression)语句找到与expression匹配的case后将贯穿执行到最后,可以使用break控制贯穿深度用case控制插入点,最后用default结尾。 5除法运算/当两个操作数全是整数是执行整除运算,得到一个整数结果,否则进行浮点数运算。 位操作的几个技巧:a|0x111<<n把a的某3个与n有关的位置1,a&0x111<<n,检查某位是否为1a&0x1<<n 复合运算符的好处:可以减少输入字符数,当操作数与其他运算有关时能减少副作用,a[f(n)]=a[f(n)]+1和a[f(n)]+=1比较输入更简洁,更重要的是第一个要计算两次f(n),第二个只要计算一次,避免了下标计算的副作用。 关于sizeof这个运算符求类型的字节数,但并没有求值,sizeof(a=b+1)紧紧求a的类型长度,并没有对a赋值,一个重要的点:如果有数组a[]sizeof(a)计算的是数组以字节为单位的长度!!32位机上长度为2的整型数组a[]sizeof(a)的结果是8 中间变量:c中会出现中间变量!(float)a把变量a强制转换成浮点类型的中间变量++aa++都是得到这样的中间变量,对中间变量赋值是没有意义的(float)a=b++a=c没有意义! c中逻辑比较会得到0或1的整型值但是所有的非零值都被认为是真。 当较大的数进行运算时要小心结果是否会溢出防止溢出的办法是对操作数进行数值范围更大的强制类型转换(但是会牺牲精度) *取内容运算的操作数只能是指针类型的数据否则可以通过强制类型转换例如:inta;*(int*a)=b但是这样做的后果不堪设想。一个有用的地方就是通过对一个常数强制转换为指针可以访问某些地址固定的外设端口。 声明为rigister存储类型的变量没有

ys****39
实名认证
内容提供者


最近下载