指针的定义
声明:
1、指针也是一种类型,与整型、字符型、浮点型、双精度浮点型 一样。又称为指针变量。它是一个变量,并且存放变量的地址。
2、int *p=&a; p称为指针(变量),p指向了a,p保存了a的地址,*p为a的内容
3、const int *p=&a;
p指向的内容不能改变,p的指向可以修改
4、int * const p=&a;
p的指向不能修改,里面的内容可以修改
5、二值:指向的地址,指向的内容
#include<iostream>
using namespace std;
void main()
{
int a=10;//整型变量本身有地址,存放整数
int b=20;
int *p=NULL;//指针变量本身有地址
int **s=NULL;
p=&a;//存放地址a的地址
s=&p;
*p=100;
*s=&b;
}
指针变量都占四个字节,为何区分,char* ,int*
1、指针的类型、指针所指的类型
2、指针所指的内存空间,或者指针自身的值(指针保存了变量的地址)
3、指针本身所占的内存
判断:
从语法的角度看,去掉变量名,就是指针的类型;去掉变量名 和 *号就是指针所指的类型。
int (p)[5]====>int()[5]====>int [5]
int p[5]====>int[5]======>int[5]
int (p)(int)==>int()(int)====>int()(int)
#include<iostream>
using namespace std;
//p1,p2,p3指向了同一段地址
//取内容时,指针+1,与指向的类型有关
void main()
{
int s=1234567890;
char * p1=(char *)&s;
cout<<*p1<<endl;
short *p2=(short *)&s;
cout<<*p2<<endl;
int *p3=&s;
cout<<*p3<<endl;
int ar[10]={0};
int (*p)[10]=&ar;//int (*)[10]
cout<<p<<":"<<p+1<<endl;//int[10]//相差40个字节
}
总结
两值四方面
1、指针指向的值
2、指针自身的值
a、指针自身的类型
b、指针指向的类型
c、指针指向的内存或者指针自身的内容
d、指针本身所占的内存