自学内容网 自学内容网

关于指针的那些事儿(模版&用法&样例)1

指针,一个让不少人头疼的东西,包括我

指针是C+ +语言中广泛使用的一种数据类型,利用指针变量可以表示各种数据结构,从
而编写出精炼而高效的程序。学习指针是学习C+ +语言中最后的一环,能否正确理解指
针和使用指针,是我们是否掌握C+ +语言的一个标志。所以今天,我就带大家搞懂指针!!!

正片开始:

指针就是内存中变量的地址。

指针最简单的操作如下:

int *p=NULL;//普通变量定义
int a=3;//指针变量定义NULL, 其实就是0,表示特殊的空地址
p=&a;//给指针变量赋值

这个里面的*是取地址,&是取内容。

指针还有一个特别有趣的特性,如果是直接输出数组名,那显示的就是数组内第一个元素的地址,不信看看:

#include<bits/stdc++.h>
using namespace std;

int main(){
int a[5]={7,6,12,8,9};//定义一个数组
cout<<a<<" "<<*a<<" "<<&a[0];//输出数组名,数组名指向的内容,a[0]的地址
return 0;
}

我们惊喜的发现,输出数组名后,显示的就是数组内第一个元素的地址,我们把数组名取地址之后,发现就是数组内第一个元素。

指针的特性远不止这些,比如指针的偏移:

#include<bits/stdc++.h>
using namespace std;

int main(){
int a[5]={7,6,12,8,9};
cout<<a<<" "<<*a<<" "<<&a[0];
int *p=a;//把a附给*p
cout<<" "<<*p<<" "<<*(p+1);//输出偏移之前和偏移之后的结果
return 0;
}

我们对比偏移之前和偏移之后(+1)的结果,发现结果也随着p的偏移(+1)而往后切换到数组中第二个元素。关于偏移还有更多的知识点,比如下面这个:

#include<bits/stdc++.h>
using namespace std;

int main(){
int a[5]={7,6,12,8,9};
cout<<a<<" "<<*a<<" "<<&a[0]<<endl;
int *p=a;
cout<<" "<<*p<<" "<<*(p+1)<<" "<<p<<" "<<(p+1);
return 0;
}

我们发现指针偏移后,被赋值的p的地址最后一位因为int加了4,后面我又试了double,发现最后一位加了8,所以我得出了一个结论,指针偏移后最后一位数字的变化是由偏移变量的类型决定的,类型是多少为,地址的最后一位就变化多少位。

这篇文章讲了指针的模版和用法,例题将留到下期。


原文地址:https://blog.csdn.net/LMZ2013/article/details/143494472

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!