C语言第八章指针.pptVIP

  • 0
  • 0
  • 约1.04万字
  • 约 52页
  • 2023-04-27 发布于广东
  • 举报
; 主要内容; 8.1地址和指针的概念;;2. “间接访问”的方式。即,将变量i的地址存放在另一个变量中。;一个变量的地址称为该变量的“指针”。 例如,地址2000是变量i的指针。如果有一个变量专门用来存放另一变量的地址(即指针),则它称为“指针变量”。上述的i_pointer就是一个指针变量。;定义指针变量的一般形式为 基类型 *指针变量名; int *i_pointer; 说明: (1)指针变量前面的“*”,表示该变量的类型为指针型变量。 例: float *pointer_1; 指针变量名是pointer_1 ,而不是* pointer_1 。 (2)int *p; 定义指针变量p,基类型为int,则该指针p只能指向int 类型变量。 (3)定义后未赋值时,其值不确定。 int *p; printf(“%u\n”,p); 定义了指针变量p,但该指针没有指向其他变量,因此输出不定值。;指针变量的赋值 —变量 可以用赋值语句使一个指针变量存放另一个变 量的地址,从而使它指向???个该变量。 例如: int i=3,*p; p=i; printf(“%u,%u\n”,p,p); 输出指针p的地址和p中存放的内容(i的地址)。 指针变量可以有空值,即该指针变量不指向任何变量。即NULL,代码值为0,等效于0和’\0’。 int *p1,*p2,*p3; p1=NULL; p2=0; p3=’\0’;;8.1.4 指针变量的引用 ;pointer_2=&b; /*把变量b的地址赋给 pointer_2 */ printf(″%d,%d\n″,a,b); printf(″%d,%d\n″,*pointer_1, *pointer_2); };例 8.5 输入a和b两个整数,按先大后小的顺序输出 a和b。;运行情况如下: 5,9↙ a=5,b=9 max=9,min=5 当输入a=5,b=9时,由于a<b,将p1和p2交换。交换前的情况见图(a),交换后见图(b)。;;8.1.5 指向指针的指针;例 使用指向指针的指针。 ; 8.2 数组与指针 ;定义一个指向数组元素的指针变量的方法,与以前介绍的指向变量的指针变量相同。 例如:int a[10]; int *p; 应当注意,如果数组为int型,则指针变量的基类型亦应为int型。 ;对该指针变量赋值: p=&a[0]; 一维数组的地址是数组首元素的地址,故一维数组名是一个指向数组首元素的??针常量,是一级指针 或 p=a; 数组名是一个地址常量,它代表数组的首地址 把a[0]元素的地址赋给指针变量p。也就是使p指向a数组的第0号元素.;引用一个数组元素,可以用:   (1) 下标法,如a[i]形式;   (2) 指针法,格式: *(地址+整型表达式 ) 如*(a+i)或*(p+i)。其中a是数组名,p是指向数组元素的指针变量,其初值p=a。 表示数组元素地址,可以用: (1) 下标法,如 a[i]形式; (2) 指针法,格式: 地址+整型表达式 如 a+i或p+i。 ;(1)下标法。 #include stdio.h main() { int a[10];   int i;  for(i=0;i<10;i++)   scanf(″%d″,&a[i]);   printf(″\n″);  for(i=0;i<10;i++)   printf(″%d″,a[i]); };(2) 通过数组名计算数组元素地址,找出元素的值。 #include stdio.h void main() { int a[10];   int i;  for(i=0;i<10;i++ )   scanf(″%d″,&a[i]);   printf(″\n″);   for(i=0;i<10;i++)    printf(″%d″,*(a+i));   };(3) 用指针变量指向数组元素。 #include stdio.h void main() { int a[10];   int *p,i;   for(i=0;i<10;i++)     scanf(″%d″,&a[i]);   printf(″\n″);   for(p=a;p<(a+10);p++)    printf(″%d ″,*p); }; 指针运算小结;选择法如下: #define N 10 #include “stdio.h” main() { int a[10],*p,i,j,t; for(p=a,i=0;i10;i+

文档评论(0)

1亿VIP精品文档

相关文档