- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第6章指针与引用
第6章 指针与引用;本章主要内容;§6.1 指针、变量及指针变量;变量与地址;变量与地址的关系;
指针:一个变量的地址。
指针变量:专门存放另一变量地址(即指针 )的变量。;; [存储类型] 基类型 *指针变量名;;指针变量的初始化 ;可以在定义之后、使用之前,给指针变量初始化 :
int a,*p; //定义时未初始化指针变量
p=a;
int *p=NULL; //定义时初始化指针为NULL。
表示p指向地址为0的单元,值为0的指针为空指针。
空指针不指向任何变量,不指向任何有效单元。
在不确定指针初值的情况下,为了安全起见,通常会把指针初始化为0。
;指针变量的引用;#includeiostream
using namespace std;
int main( )
{
int ia=12; //定义整型变量ia并初始化
int ib=45; //定义整型变量ib并初始化
coutia:ia,ia:iaendl;
coutib:ib,ib:ibendl;
int *ip1,*ip2; //定义指针变量*ip1,*ip2
ip1=ia; //把变量ia的地址赋给ip1
ip2=ib; //把变量ib的地址赋给ip2
coutip1:ip1,ip1:ip1,*ip1:*ip1endl;
coutip2:ip2,ip2:ip2,*ip2:*ip2endl;
return 0;
};§6.2 数组与指针;指针法
定义一个指针变量指向数组元素的一般方法如下:
int a[5]; //定义一个含有5个元素的整型数组a
int *p; //定义指向整型变量的指针p
p=a[0]; //将数组中第一个元素的地址赋值给p
由于数组名表示数组的首地址,可将以上语句改写为
int a[5];
int *p;
p=a; //将数组名赋给指针变量
也可以在定义的同时为指针变量赋值
int *p=a[0]; 或
int *p=a;;指向数组的指针;数组元素的四种表示方法:;假设p指向数组a的首元素(即p=a),则:
p++表示p指向下一个元素a[1],若要取得a[1]的值,可以写成 :
p++;
b=*p;
而
b=*(p++);
*(p++)表示先将p的值(即地址)输出,与*结合得到p所指向变量的值,然后p的值(即地址)加1。所以得到的是a[0]的值.
*p++表示先得到p所指向的变量的值,然后p的值(即地址)加1。
*(++p)与*(p++)是不同的,前者表示先将p的值(即地址)加1,再输出地址加1后所指向变量的值。
(*p)++表示p所指向的数组元素值加1
;#includeiostream
using namespace std;
int a[]={0,1,2,3,4};
void main()
{
int i,*p;
for(i=0;i=4;i++)
couta[i]\t;
coutendl;
for(p=a[0];p=a[4];p++)
cout*p\t;
coutendl;
for(p=a[0],i=1;i=4;i++)
coutp[i]\t;
coutendl;
for(p=a,i=0;p+i=a+4;p++,i++)
cout*(p+i)\t;
coutendl;
};指针数组;#includeiostream
using namespace std;
void main()
{
int *p[3],a=1,b=2,c=3;
p[0]=a;
p[1]=b;
p[2]=c;
cout*p[0]\t*p[1]\t*p[2];
}; = 指针的赋值运算。
int i,*p1,*p2,*p3,*p4,*p5;
int array[20];
;指针的算术运算:;指针的关系运算:表示其所指向的存储单元的相对位置。
若px和py指向同一数组,则
pxpy 表示px指的元素在前
pxpy 表示px指的元素在后
px= =py 表示px与py指向同一存储单元
px= =0 表示px为空指针? p= =NULL
若px与py不指向同一数组,比较无意义;§6.2.2 字符串与指针;#includeiostream
using namespace std;
void main()
{
char s[28];
char *p;
cin.getline(s,27); //字符数组接受一行数据一个字符串的方式
p=s;
while(*p!=\0)
p++;
cout字符串s的长度是:p-sendl;
};字符指针表示形式;§6.3 函数与指针;#includeiostream
using
文档评论(0)