第十章指针 ■10.1地址和指针的概念 10.2变量的指针和指向变量的指针变量 10.3数组的指针和指向数组的指针变量 ■10.4字符串的指针和指向字符串的指针变量 10.5函数的指针和指向函数的指针 10.6返回指针值的函数
第十章 指针 ◼ 10.1 地址和指针的概念 ◼ 10.2 变量的指针和指向变量的指针变量 ◼ 10.3 数组的指针和指向数组的指针变量 ◼ 10.4 字符串的指针和指向字符串的指针变量 ◼ 10.5 函数的指针和指向函数的指针 ◼ 10.6 返回指针值的函数
101地址和指针的概念 地址与指针 1.地址与取地址运算 C程序中的变量在内存中占有一个可标识的存储区, 每一个存储区是由若干个字节组成,每一个字节都有 自己的地址,而一个存储区的地址是指该存储区中 第一个字节的地址 C语言允许在程序中使用变量的地址 (通过地址运算符&可得到) 如: float x; 变量x的地址--&x inta[101;数组变量a的地址---数组名a
10.1 地址和指针的概念 一. 地址与指针 1. 地址与取地址运算 C程序中的变量在内存中占有一个可标识的存储区, 每一个存储区是由若干个字节组成, 每一个字节都有 自己的地址, 而一个存储区的地址是指该存储区中 第一个字节的地址 C语言允许在程序中使用变量的地址 ( 通过地址运算符&可得到) 如: float x ; 变量 x 的地址 ---- &x int a[10] ; 数组变量 a 的地址 ---- 数组名 a
2.指针与指针变量 (1)变量的访问方式 ①直接访问:通过变量名或地址访问变量的存储区 例: scanf (“%d”,&x); x-sqrt(x); printf(“%d”,x); ②间接访问:将一个变量的地址存放在另一个变量中 如将变量x的地址存放在2012 1010 变量p中,访间x时先找到p,1010 再由p中存放的地址找到x X (2)指针:一个变量的指针就是该变量的地址(指针就是地址) 如变量x的指针为1010。 (3)指针变量:存放某个变量的地址的变量,它用来指向另 个变量。如p就是存放变量x的地址的指针变量
2. 指针与指针变量 (1) 变量的访问方式 ① 直接访问 : 通过变量名或地址访问变量的存储区 例 : scanf ( “%d” , &x ) ; x = sqrt(x) ; printf ( “%d” , x ) ; ② 间接访问 : 将一个变量的地址存放在另一个变量中 如将变量 x 的地址存放在 变量p 中, 访问x 时先找到p, 再由p 中存放的地址找到x p x 2012 1010 1010 (2) 指针: 一个变量的指针就是该变量的地址(指针就是地址) 如变量x的指针为1010。 (3) 指针变量: 存放某个变量的地址的变量, 它用来指向另一 个变量。如p就是存放变量x的地址的指针变量
102变量的指针和指向变量的指针变量 、指针变量的定义 1.格式:数据类型*指针变量名; 例int“p har *p2 i 2.说明: (1)在变量定义时,号表示该变量是指针变量 (注意:指针变量是p1,p2,不是*p1,*p2) (2)定义指针变量后,系统为其分配存储空间,用以存放 其他变量的地址,但在对指针变量赋值前,它并没有 确定的值,也不指向一个确定的变量 例:intx,*p; 2012 1010 1234 5 注:指针变量p的值是随机值, 此时p和x并无关联
10.2 变量的指针和指向变量的指针变量 一、 指针变量的定义 1. 格式 : 数据类型 * 指针变量名; 例 int *p1 ; char *p2 ; 2. 说明 : (1) 在变量定义时, * 号表示该变量是指针变量 ( 注意: 指针变量是p1 , p2 , 不是*p1 , *p2 ) (2) 定义指针变量后, 系统为其分配存储空间, 用以存放 其他变量的地址, 但在对指针变量赋值前, 它并没有 确定的值, 也不指向一个确定的变量 例: int x , *p ; x = 5 ; p x 2012 1010 1234 5 注: 指针变量p的值是随机值, 此时p 和 x 并无关联
(3)使指针变量指向一个确定的变量必须进行赋值 int x,*p 2012 1010 X=5; 1010 5 p=&x; 指针变量的引用 1.指针运算符 (1)p与*不同,p是指针变量,p的值是p所指向的变量的地址 p是p所指向的变量,p的值是p所指向的变量的值 p的值为5(p表示x),而p的值为1010 (2)引用指针变量时的*与定义指针变量时的*不同 定义变量时的*只是表示其后的变量p是指针变量 引用时*表示取指针变量p所指向的变量x的值
(3) 使指针变量指向一个确定的变量必须进行赋值 int x , *p ; x = 5 ; p = &x ; p x 2012 1010 1010 5 二、 指针变量的引用 1. 指针运算符* (1) p与*p不同, p是指针变量, p的值是p所指向的变量的地址 *p 是p 所指向的变量, *p的值是p所指向的变量的值 *p 的值为 5 (*p 表示 x) , 而p 的值为 1010 (2) 引用指针变量时的 * 与 定义指针变量时的* 不同 定义变量时的* 只是表示其后的变量p是指针变量; 引用时*表示取指针变量p所指向的变量x的值