欢迎来到天天文库
浏览记录
ID:32265006
大小:51.00 KB
页数:3页
时间:2019-02-02
《c语言需要注意的几个问题》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C语言需要注意的几个问题1.需要掌握C语言的最基本的运行机制:正确、熟练地掌握它的工作原理。2.必须要建立良好的编程风格和规范3.需要会有机组织项目、源代码之间的层次关系(多写代码)。容易产生疑惑的问题如下几项:(没有全部列出来,以后想到了咱们一块补充一下)1.指针与数组的关系:(有哪些段?分别放什么?初始化的和无初始化的全局变量,静态变量,局部变量、动态变量、指针变量等等各种情况)例:char*ptr=“goodmorning”;chararr[]=“goodmorning”;sizeof(ptr)=?sizeof(arr)=?ptr[0]=‘G’?arr[0]=‘G’?2.数据对齐问题
2、例1:下面3个数据结构的大小分别为多少?structst1structst2structst3{{{charch;inti;charch;charch;charch;inti;inti;charch;charch;}}}sizeof(st1)?sizeof(st2)?sizeof(st3)?例2:sizeof(structs2)=?structs1{shorta;/*2bytes*/longb;/*4bytes*/};structs2{charc;s1d;longlonge;/*8bytes*/}1.大端与小端问题:大端小端的本质、哪些处理器和情况下用大端或小端?写代码区分大端和小端:[方
3、法1][方法2]intx=1;unionif(*(char*)&x==1){{inti;printf(“littleendian”);charc[sizeof(int)];}}x;elsex.i=1;{if(x.c[0]==1)printf(big-endian){}printf(“littleendian”);}else{printf(“bigendian”);}2.声明与定义:需要掌握针对不同变量和函数的声明和定义应该放在哪个文件的哪个位置上。l声明:inta;externchar*myfunc(int*);l定义:(不能写在*.h)externchar*myfunc(int*ptr)
4、{…}3.需要掌握一些关键字的意义lstatic:静态变量,代码可重入性lextern(引用外部定义的变量或者函数)lConst(区别)intconsta;constintb;constint*c;int*constd;constint*conste;lvolitaileunsigned*port=(volitaileunsigned*)0xffffffff(不让编译器优化,什么时候用?看看i/o寄存器相关代码)4.变量指针和函数指针例1:函数指针(mansignal)void(*signal(intsigno,void(*func)(int)))(int);typedefvoid(*__
5、sighandler_t)(int);#defineSIG_DFL((__sighandler_t)0)#defineSIG_IGN((__sighandler_t)1)#defineSIG_ERR((__sighandler_t)-1)例2:下面的C语言是什么意思?typedefint(*(*(*func)(char*))[5])(int[]);例3:下面的C语言是什么意思?structret(例子){intnumber;char*text}(*my_shm)(struct*pret,intnum);练习题:l自己写一个函数指针:int(*select[2])(int,int);函数指针
6、数组:第一个函数:求最大值:(*select[0])()第二个函数:求最小值:(*select[1])()1.多看高人写的代码,多体会内核的实现模式。。。
此文档下载收益归作者所有