- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言进阶
C语言进阶 一、宏定义 #define FIND(s,e) (size_t)(((struct s*)(0))-e) //求结构体内的变量相对于结构体的偏移量 #define SECONDS_PER_YEAR (360*24*60*60)UL //求一年中的秒数 #define MIN(a,b) (((a)=(b))?(a):(b)) //求最小值 说明:尽可能考虑移植性,由于代码可能在16位机,也有可能在32位机器上运行,所以采用size_t和UL都是基于移植性的考虑。 #define dprint ser_printf #define scanf ser_scanf #define getchar ser_getchar #define putchar ser_putchar 二 const用法 定义常量,修饰指针、函数的输入参数和返回值,简单说const表示只读的意思,本质上来说它只是在全局数据段或者栈中定义的是一个只读的常量,不是真正 位于字符串常量区。Const的目的是为了产生高质量的代码,提高代码的可读性,同时保护好不能被任意改变的内存,从而降低Bug产生的概率。 const int a = 10; const int b;//错误,常量必须初始化 ??? int a = 10,b = 9; ??? const int *p1 = a;//指针指向的内容只读,不能通过该指针去写 ??? *p1 = 11;//错误 ??? int * const p2 = a;//指针本身只读,指针初始化到一个对象后,将不能被修改 p2 = b;//错误 const int *p3 const = a;//指针本身和指向的内容都是只读 const char *fp1(void) //修饰返回值,表示返回的指针指向内容只读 { ??? char *p = dddd; ??? return p; } void fp1(const char *str) { ??? *str = 4; //错误 ??? const char *p = str;//p必须为const,才能接受str } 三 extern用法 在别的文件中定义的变量,要想在本文件中使用,必须先用extern声明,例如:extern a;之后就当成在本文件中定义的变量一样使用。 四、static用法 1.修饰变量,从生存域和访问域两个方面说明,无论static变量定义在函数内或外,该变量都位于数据段中;定义于函数体外的static变量的访问域仅仅是它所在文件中定义的函数,其他文件无法通过extern对其声明后访问。 2.修饰函数,使得函数的访问域仅仅为其所定义的函数。 3.类中变量用static修饰表示变量是类变量,类中函数用static修饰表示函数只能访问类中的static变量,不接受this指针,称为类函数。 例如: //file1 void fstatic(void); static void fstatic(void) { ??? return; } //file2 void fstatic(void); Main() { fstatic();//声明仍然无法调用 } 总之,static实现了c语言的封装性,一定程度上实现了信息的封装和隐藏。 五、sizeof用法 sizeof是一个运算符,编译器在编译时就能确定其的运算结果,其运算对象可以是内部数据类型名、struct类型名、class类型名、数组变量和其 他类型的变量,只有计算对象是数组变量时,能得出数组实际的长度,其他类型的变量作为运算对象时,都将退化为对该对象的数据类型的运算。另外,在计算 struct和class等用户自定义数据类型的大小时,需要考虑编译器会对其做优化处理,根据一定的原则调整,即会自动对齐,sizeof的结果往往会 大于各个元素长度的和。 static int nports = sizeof(serial_port) / sizeof(struct serial_s); 1、若操作数具有类型char、unsigned char或signed char,其结果等于1。ANSI C正式规定字符类型为1字节。 2、int、unsigned int 、short int、unsigned short 、long int 、unsigned long 、float、double、long double类型的sizeof 在ANSI C中没有具体规定,大小依赖于实现,一般可能分别为2、 2、2、2、4、4、4、8、10。 3、当操作数是指针时,sizeof依赖于编译器。例如Microsoft C/C++7.0中,near类指针字节数为2,far、huge类指针字节数为4。一般Unix的指
有哪些信誉好的足球投注网站
文档评论(0)