(c语言的重要概念.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(c语言的重要概念

c语言的重要概念 一、C语言的指针 1.指针说明   指针是包含另一变量的地址变量。   (1)int *p   p是一个指针,指向一个整形数。   (2)int *p()   p是一个函数,该函数返回一个指向整数的指针。   (3)int (*p)()   p是一个指针,该指针指向一个函数,这个函数返回一个整数。   (4)int *p[]   p是一个数组,该数组的每一个元素是指向整数的指针。   (5)int (*p)[]   p是一个指针,该指针指向一个数组,这个数组的每一个元素是一个整数。   (6)int *(*p)()   p是一个指针,该指针指向一个函数,这个函数返回一个指向整数的指针。 2.指针的初始化(赋地址)   (1)通过符号取变量(包括结构变量、数组第一个元素)的地址赋给指针;   (2)把数组名赋给指针;   (3)把函数名赋给指向函数的指针;   (4)动态分配内存   例:struct c{double r,i;};   struct c *p;   p=(struct c *)malloc(sizeof(struct c)); 3.指针与数组、函数的关系   (1)对于一维数组 int a[i] 或指针 int *a   a+i 指向 a[i]   (2)对于字符串 char s[i] 或指针 char *s   s+i 指向第 i个字符 s[i]   (3)对于二维数组int a[i][j]   *a+j 指向 a[0][j]   *(a+i) 指向 a[i][0]   *(a+i)+j 指向 a[i][j]   例:对于 a[2][3]={1,2,3,4,5,6,}; 有 *(*(a+1)+1)=5;   (4)对于字符串数组char p[i][j] 或字符型指针数组char *p[i]   *p+j 指向第 0个字符串的第 j个字符   *(p+i) 指向第 i个字符串的第 0个字符   *(p+i)+j 指向第 i个字符串的第 j个字符   例:对于 *p[]={ABC,DEF}; 有 *(*(p+1)+1)=E;   例:对于 char p[][3]={ABC,DEF}; 有 *(*(p+1)+1)=E;   (5)对于指针数组int *a[i]   a[i] 指向 变量i   即 *a[i]=变量i 或 a[i]=变量i   (6)对于结构struct XY   {int x;int *y}*p;   p是指向结构XY的指针   (*p).x 或 p-x 是表示 x 的内容   (*p).y 或 p-y 是表示指针 y 的值(地址)   *(*p).y 或 *p-y 是表示 y 所指的内容   (*p).x 或 p-x 是表示 x 的地址   (7)指向函数的指针   对于 void func(char *str)   {…}; //定义了一个函数   void (*p)(char*);//定义了一个函数指针   p=func; //让指针指向函数   则(*p)(…); //用指针p可以调用函数func   (8)指向多个不同函数的指针数组   对于void function_1() {…};   …   void function_4() {…}; //定义了四个函数   typedef void(*menu_fcn)();//定义了指向函数的指针   menu_fcn command[4]; //定义了指针数组   command[0]=function_1;   …   command[3]=function_4; //让指针数组指向四个函数   则command[0](); //用指针数组中的一个元素调用一个函数 4.指针的分类   (1)近指针(near):   近指针为16位指针,它只含有地址的偏移量部分。近指针用于不超过64K 字节的单个数据段或代码段。在微、小和中编译模式下产生的数据指针是近指针(缺省状态);在微、小和中编译模式下产生的码指针(指向函数的指针)是近指针(缺省状态)。   (2)远指针(far)   远指针为32位指针,指针的段地址和偏移量都在指针内。可用于任意编译模式。每次使用远指针时都要重装段寄存器。远指针可寻址的目标不能超过64K ,因为远指针增减运算时,段地址不参与运算。在紧凑、大和巨模式下编译产生的数据指针是远指针(缺省状态)。   (3)巨指针(huge)   巨指针为32位指针,指针的段地址和偏移量都在指针内。可用于任意编译模式。远指针寻址的目标可以超过64K 。巨指针是规则化的指针。 5.指针的转换   (1)远指针转换成巨指针   使用以下函数   void normalize(void far * * p)   {   

文档评论(0)

84537592 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档