C语言指针解读.pptVIP

  • 1
  • 0
  • 约8.01千字
  • 约 40页
  • 2020-05-24 发布于天津
  • 举报
2019/2/25 1 C 程序设计中使用指针可以 : ? 使程序简洁、紧凑、高效 ? 有效地表示复杂的数据结构 ? 动态分配内存 第 6 章 指针 2019/2/25 2 6.1 指针和变量 在计算机中,内存中的每一个字节的内存 单元都有一个编号,这个编号就是“ 地址 ”, 对于有多个字节的变量,第一个字节的地址 就是 该变量的地址 。 如果有: short int x=5 ;设系统为 x 分配 的地址为 2000 ,则 : x 2000 5 p 2002 2000 注意:区分 变量的地址 和 变量的值 2019/2/25 3 变量的指针 : 就是变量的地址。 指针变量 : 存放变量地址的变量。 定义指针变量的一般形式为: 基类型 * 变量名; 其中基类型用来指定该指针变量所指向的变 量的类型。 例如: float *p ; /* 定义 p 为指向实型变量的指针 */ int *q; /* 定义 q 为指向整形变量的指针 */ char *s; /* 定义 s 为指向字符型变量的指针 */ 2019/2/25 4 char x= ‘ A ; char *p; p=x; 注意:指针变量只能存放具有基本类型的 变量的地址。 4000 p A x A 4000H 4001H 2019/2/25 5 与指针相关的运算符: ⑴ :取地址运算符,其作用是求变量 的地址。 取地址运算符具有 右结合性 , 其优先级和自加运算符相同 2 。 ⑵ * :指针运算符 , 或称“间接访问”运 算符。 指针运算符也具有 右结合性, 优先级 为 2 。 2019/2/25 6 【例 1 】 main() { int a=3; int *p; p=a; printf( “ a=%d,*p=%d ” ,a,*p); printf( “ *a=%d ” ,*a); printf( “ **p=%d ” ,**p); } 2019/2/25 7 【例 2 】用指针的方法交换两个数 main() { int x=102,y=12,t; int *p1,*p2; p1=x; p2=y; printf( “ x=%d,y=%d ” ,x,y); t=*p1; *p1=*p2; *p2=t; printf( “ x=%d,y=%d ” ,x,y); } 2019/2/25 8 例 main( ) { int i=10; int *p; *p=i; printf( %d ,*p); } 例 main( ) { int i=10,k; int *p; p=k; *p=i; printf( %d ,*p); } 指针变量必须先赋值 , 再使用 错误 正确 2019/2/25 9 6.2 指针与数组 6.2.1 指向数组的指针 1. 一维数组的指针 例如: int a[10],*p; p=a [0]; a 是数组名,代表一维数组的首地址。 *(a+i) = a[i] p=a; *(p+i) = p[i]=a[i] 2019/2/25 10 a [0] a [9] p a 【例 3 】用指针法输出数组元素。 main( ) { int a[10], i, *p; for (i=0; i10; i++)

文档评论(0)

1亿VIP精品文档

相关文档