- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C课件ch06
第 6章 指针;第 6章 主要内容;第 6章 主要内容;6.1 地址、指针和指针变量的概念;; short int x=2 ;
float y=3.0 ;
char ch= ‘a’ ;
;程序在执行时,CPU并不直接识别变量名,而是通过该变量的内存地址访问其值的。;还有另外一种访问变量的方式称为“间接访问”方式。;;;与*运算符
含义;直接访问与间接访问
直接访问:按变量地址存取变量值
间接访问:通过存放变量地址的变量去访问变量;指针变量;;6.2 指针变量的定义、赋值和引用;2000;3001;5004;;6.2.3 指针的引用;4004;注意:
*在指针变量定义时出现和程序运算过程中出现,含义是不同的;2000; void main(){
short int i,*pi;
pi=i;//指针变量pi指向i
i=5;
couti,*pendl; //输出变量i的值
*pi =6; //改变变量i的值
couti,*pendl;
}; 指针变量
指针变量与其所指向的变量之间的关系;指针变量的初始化
一般形式:[存储类型] 数据类型 *指针名=初始地址值;;例 main( )
{ int i=10;
int *p;
*p=i;
cout *p;
};零指针与空类型指针
零指针:(空指针)
定义:指针变量值为零
表示: int * p=0; ;;;;6.3 指针的运算;1. p++(或++p)、p--(或--p); short int i,*pi=i;
char ch,*pc=ch;
float f,*pf=f;
pi++;
pc++;
pf++; ;2. *p++ 和(*p)++;4004;3. *++p和++(*p);4004;比较:;4004;5. p-q(p,q为同一类型的指针);【例6.2】 同一类型指针相减举例;6.3.2 指针的关系运算 ;;;6.4 指针与一维数组;元素的地址也是元素的指针,
表示为a+i a[i],
指针a+i指向的元素可以表示为 *(a+i),
所以,a[i] *(a+i);;表6.2 指针p与一维数组a的关系;1、指向数组元素的指针变量;;指针的算术运算;;;3、数组元素表示方法;;例 main()
{ int a []={5,8,7,6,2,7,3};
int y,*p=a[1];
y=(*--p)++;
printf(“%d ”,y);
printf(“%d”,a[0]);
} ;main()
{ int i,*p,a[7];
p=a;
for(i=0;i7;i++)
scanf(%d,p++);
printf(\n);
for(i=0;i7;i++,p++)
printf(%d,*p);
};(1)通过指针变量的移动访问数组元素
void main()
{
int a[10],i; *p;
for(i=0;i10;i++)
cina[i] ;
for(p=a;pa+10; p++ )
cout*p“ “;
} ;(2)指针变量p指向数组指向首地址不动,
用p+i方式访问数组元素(同样是变址运算); ;【例6.5】用指针变量正反向输出字符数组。;;6.5 指针变量作函数参数;【例6.6】交换两个整数a,b中的值。有下列3种数据交换方式,分析各自的功能,观察实参哪种方式正确。;2.实参为变量的地址,形参为指针变量。;3. 实参为变量的地址,形参为指针变量。;【例6.7】实现一个统计函数。统计字符串 中大写字母、小写字母个数。;
//声明函数,实现计数的具体工作
void count (
char *str, //参数str接受实参传来的字符串地址
int * pnumA, //pnumA接受大写字母计数器变量地址
int *pnuma //pnuma接受小写字母计数器变量地址
); ;void main()
文档评论(0)