第六章指针
第六章 指针
地址和指针的概念 指针是C中一个重要概念,也是C的重要特色, 可以有效地表示复杂的数据结构,能动态分配 内存,能直接处理内存地址等。 指针的概念比较复杂,使用很灵活,不易掌握, 因此要多做练习
地址和指针的概念 ➢指针是C中一个重要概念,也是C的重要特色, 可以有效地表示复杂的数据结构,能动态分配 内存,能直接处理内存地址等。 ➢指针的概念比较复杂,使用很灵活,不易掌握, 因此要多做练习
指针概述 ◆地址与指针 ◇地址与取地址运算 c语言中变量、数组、函数等都占用一定的内存空间 地址是指该内存空间的第一个字节的地址。 c语言中取地址运算符:8。 ◇指针与指针变量 指针:就是地址,是变量的地址 指针变量:存放变量地址的变量
6-1 指针概述 地址与指针 地址与取地址运算 ➢C语言中变量、数组、函数等都占用一定的内存空间, 地址是指该内存空间的第一个字节的地址。 ➢C语言中取地址运算符:&。 指针与指针变量 ➢指针:就是地址,是变量的地址。 ➢指针变量:存放变量地址的变量
◇指针的类型与指针的定义 ◇指针所指向的对象的类型即是指针的类型 ◇指针的定义:只要在变量名前加“*”即可 例:int*p表示p是一个指向整型变量的指针 注意:*表示其后的变量是指针,指针变量是p而非*p >指针变量一般占2个字节,用来存放一个地址。 >例L6-0-1变量、地址、指针、指针的地址
指针的类型与指针的定义 指针所指向的对象的类型即是指针的类型。 指针的定义:只要在变量名前加“ * ”即可。 ➢例: int * p 表示p是一个指向整型变量的指针。 ➢注意: * 表示其后的变量是指针,指针变量是p而非*p。 ➢指针变量一般占2个字节,用来存放一个地址。 ➢例L6-0-1 变量、地址、指针、指针的地址
◆指针变量的引用 ◇&运算符:取地址运算。 ◇*运算符:指针运算(指向运算,或间接运算),*p表 小p所指向的变 ◇例L61&与*运算符 p 11 pI p2 &il 10 &il 10 p2 12 &i2 20 &i2 20
指针变量的引用 &运算符:取地址运算。 * 运算符:指针运算(指向运算,或间接运算),*p表 示p所指向的变量。 例L6-1 &与*运算符。 i1 &i1 10 p1 i2 &i2 20 p2 i1 &i1 10 p1 i2 &i2 20 p2
◇例L6-2使两个指针变量交换指向 pl p &il 10 &il 10 p2 2 p 12 20 12 20 ◇例L6-3交换两个指针变量所指向变量的值
例L6-2 使两个指针变量交换指向。 i1 &i1 10 p1 i2 &i2 20 p2 i1 &i1 10 p1 i2 &i2 20 p2 例L6-3 交换两个指针变量所指向变量的值
◇指向指针的指针 int I,"p1,**p2; p p &pl i 例L6-3-2
指向指针的指针 int I,*p1,**p2; 3 i &i p1 &p1 p2 例L6-3-2
◇多重指针:从理论上讲,可以有多重指针,但 般极易出错,不提倡使用多重指针。 例L6-4多重指针
多重指针:从理论上讲,可以有多重指针,但一 般极易出错,不提倡使用多重指针。 例L6-4 多重指针
习题59统计单词与空格数。 习题5-14字符串转换为大写、小写(数组法 习题5-14-2字符串转换为大写、小写(指针法)
习题5-9 统计单词与空格数。 习题5-14 字符串转换为大写、小写(数组法) 习题5-14-2 字符串转换为大写、小写(指针法)
6-2指针与数组 ◇一维数组的指针表示 ◇a[i下标法访间数组元素。 *(a+i)地址法访问数组元素。 (a+i表示:从数组a的首地 A[0]=1 址开始的第个元素。) A[1]=3 例L6-5 A[2=5 A[3]=7 A[4]=9
6-2 指针与数组 一维数组的指针表示 a[i]:下标法访问数组元素。 *(a+i):地址法访问数组元素。 (a+i表示:从数组a的首地 址开始的第i个元素。) 例L6-5 A[0]=1 A[1]=3 A[2]=5 A[3]=7 A[4]=9 a a+1 a+2 a+3 a+4 ffd0 ffd2 ffd4 ffd6 ffd8