09 C++从入门到精通—指针初步
1.地址与指针
指针是一个既简单又复杂的东西,用得好会让程序更灵活,用不好程序会一团糟。
地址:地址就是内存区中对每个字节的编号
指针:指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址。
2.变量与指针
前面讲过指针是一个存放地址的变量
指针变量和其他变量一样都有类型名,同种类型的指针只能指向同种类型变量的地址
指针的一般形式如下//类型说明 * 变量名 int *p; char *c; int* a,b,c; //同时定义指针变量a,b,c // "*"表示该变量是一个指针变量,类型说明本指针变量所指向的变量的数据类型
既然是变量,那就可以赋值
C++提供了地址运算符"&“来表示变量的地址,就好像scanf(”%d",&i);一样
指针变量赋值有两种方法
- 1.定义指针变量的同时进行赋值
#include<iostream> using namespace std; int main(){ int a=100; int *p=&a; cout<<p<<endl; //输出指针地址 cout<<*p<<endl; // 输出指针所指向的变量的值 return 0; }
- 2.先定义指针之后再赋值
#include<iostream> using namespace std; int main(){ int *p; int a=100; p=&a; cout<<p<<endl; //输出地址 cout<<*p<<endl; return 0; }
3.指针的自加自减
你以为指针的自加自减和一般变量的自加自减一样,简单的变量加1或减1
那你就错了,指针加1就是指向下一个存放同种类型的地址,指针减1就是指向上一个地址,加2和减2就是指向下两个或上两个地址#include<iostream> using namespace std; int main(){ int a=100; int *p=&a; cout<<p<<endl; cout<<"-------华丽的分割线-------"<<endl; p++; //指向下一个地址,int类型是4字节,地址值应该加4 cout<<p<<endl; return 0; }