c语言的重要概念

原创 2007年09月24日 16:30:00
C语言重要概念![转贴]
阿摆 发表于 2006-1-12 17:14:00 
 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)
  {
  *p=(void far *)(((long)*p&0xffff000f)+(((long)*p&0x0000fff00<<12));
  }
6.指针的使用
  (1)将浮点数转换成二进制数
  float ff=16.5;
  unsigned char *cc;
  (float*)cc=&ff;
  //此时cc的内容为"00008441"
  //即cc第一个字节=0;第二个字节=0;第三个字节=0x84;第四个字节=0x41;
  (2)将二进制数转换成浮点数
  float ff;
  unsigned char *cc;
  cc=(unsigned char*)malloc(4);
  cc=(unsigned char*)&ff;
  *(cc+0)=0;
  *(cc+1)=0;
  *(cc+2)=0x84;
  *(cc+3)=0x41;
  //此时ff=16.5
  free(cc);


二、C 语言的函数
1.用户自定义函数格式
  类型 函数名(形式参数表)
  参数说明
  {
  ……
  }
2.函数的调用方式
  (1)传值方式
  ①传给被调用函数的是整型、长整型、浮点型或双精度型变量。被调用的函数得定义相应的变量为形参。
  ②传给被调用函数的是结构变量。被调用函数得定义结构变量为形参。
  ③传给被调用函数的是结构变量的成员。被调用函数得定义与该成员同类的变量为形参。
  (2)传址方式
  ①传给被调用函数的是变量的地址。被调用函数得定义指针变量为形参。
  ②传给被调用函数的是数组的地址即数组名。被调用的函数得定义数组或指针变量为形参。
  ③传给被调用函数的是函数的地址即函数名称。被调用函数得定义指向函数的指针变量为形参。
  ④传给被调用函数的是结构的地址。被调用函数得定义结构指针为形参。
3.函数调用(传值方式)结果的返回
  (1)返回的是数值
  要求被调用的函数类型与接收返回值的变量类型相同。
  (2)返回的是指针
  要求被调用的函数是指针函数,其指向的类型与接收的指针变量指向类型相同。
  (3)不返回任何值
  被调用的函数是void型。

 

C语言重要概念汇总

作者:郭孝星 微博:郭孝星的新浪微博 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells Github:https://githu...
  • AllenWells
  • AllenWells
  • 2015年08月11日 13:39
  • 1245

C语言的重要概念

一、C语言的指针1.指针说明  指针是包含另一变量的地址的变量。  (1)int *p  p是一个指针,指向一个整型数。  (2)int *p()  p是一个函数,该函数返回一个指向整数的指针。  (...
  • darkone
  • darkone
  • 2007年03月30日 11:10
  • 885

内存:C/C++编程的重要概念

内存:C/C++编程的重要概念刘建文略译(http://www.semi-translate.com ) 这是一本好书,或者说是一本目前非常适合我胃口的书。看了一下好象国内还没有中文翻译,故想边自己翻...
  • keminlau
  • keminlau
  • 2008年01月19日 12:41
  • 1332

C语言重要知识点总结(一)

C语言重要知识点总结(一)最近重新看了下C语言,发现先前学习的时候很多的重点都被忽略了,现在回头看发现了很多以前没有注意的东西,所以写博客记录下,方便以后可以参考查询。 变量的存储类别C语言中变量的存...
  • c1s2p3
  • c1s2p3
  • 2015年10月15日 20:04
  • 969

C语言重要性

C语言是有史以来最为重要编程语言,谢外挂、做黑客必须掌握的语言。 C/C++是永远不过时的贵族语言,除了纯应用的公司 C/C++市场需求量大,职位数量多,仅次于Java。 适用领域? C语言可以写网站...
  • u014483196
  • u014483196
  • 2016年06月07日 16:43
  • 177

C语言各类指针概念

C语言中有很多关于指针的使用,指针也是C语言的灵魂所在,而且C语言中也有很多有关指针的概念,这里学习并总结了一些知道的概念。   常量指针: 首先它是一个指针,常量只是用来修饰指针的定语。其定义...
  • five3
  • five3
  • 2011年12月31日 00:01
  • 2212

C语言最重要的知识点

总体上必须清楚的:  1)程序结构是三种:  顺序结构 、选择结构(分支结构)、循环结构。  2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择),有且只有...
  • freemindhack
  • freemindhack
  • 2014年05月28日 22:56
  • 610

c语言的几个重要知识点

本文转自:http://www.cnblogs.com/cherri/archive/2010/12/04/1896183.html 目录: 1. 内存结构 2 .指针 3. ...
  • zhoucoolqi
  • zhoucoolqi
  • 2012年08月27日 15:53
  • 6615

C语言的重要概念

一、C语言的指针1.指针说明 指针是包含另一变量的地址变量。  (1)int *p   p是一个指针,指向一个整形数。  (2)int *p()   p是一个函数,该函数返回一个指向整数的指针。  (...
  • xghnuaa
  • xghnuaa
  • 2004年11月26日 11:20
  • 3632

c语言的重要概念

 C语言的重要概念一、C语言的指针1.指针说明 指针是包含另一变量的地址变量。  (1)int *p   p是一个指针,指向一个整形数。  (2)int *p()   p是一个函数,该函数返回一个指向...
  • johndiyang
  • johndiyang
  • 2006年09月28日 15:47
  • 785
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c语言的重要概念
举报原因:
原因补充:

(最多只允许输入30个字)