1.指针基础
字符:'C' 一个字符占一个字节
在C++中 << 这个为插入运算符 >> 这个为提取运算符
一个变量的地址称为该变量的指针;如果在程序中定义了一个变量或者数组,
那么,这个变量或数组的地址(指针);也就确定为一个常量。
(1)直接访问:按变量地址存取变量。
cin>>i; //shiji上放到定义i单元的地址中
例如:
#include<iostream>
using namespace std;
int main()
{
int x = 6;
cout<<"\n x在内存单元的地址为:"<< &x <<endl; //直接访问
cout<<"\n请输入 x 的值:"<< x <<endl;
cin>>x;
cout<<"x的值为:"<< x <<endl;
return 0;
}
(2)间接访问:将变量的地址存放到另一个单元p中,
通过p取出变量的地址,再对变量操作。
例如:
#include<iostream>
using namespace std;
int main()
{
int* p = null; //一级指针
int x = 666;
cout<<"\n x在内存单元的地址编号为:"<< &x <<endl;
p = &x;
cout<<"p的值为(x的内存单元地址编号): "<< p <<endl;
cout<<"输出指针变量 p 指向地址编号的值:"<< *p <<endl; //间接访问
return 0;
}
变量的 指针 和 指向变量的 指针变量
变量的 指针 就是 变量的地址,当变量定义后,其指针(地址)是一 常量
如:可以定义一个变量 专门用来存放 另一变量的地址,这种变量我们称为“指针变量”
在编译时同样分配一定的存储单元,为赋初值时,该存储单元的值是随机的
指针变量定义的一般形式为:
类型标识符 *变量名
int *i_point;
指针变量赋初值的两种写法:
(1) int i , *i_piont;
i_point = &i;
(2) int i;
int *i_point = &i;
注意:一个指针变量只能指向同一类型的变量;即:整型变量只能指向存放整型变量数据的地址,
而不能存放其它类型数据的地址。
* 的含义:
1. 在定义语句中只表示变量的类型是指针,没有任何计算意义
2. * 在语句中表示"指向"。 &表示"取地址"
2.指针变量的引用:
指针变量只能存放地址,不要将非地址数据赋值给指针变量。
#include<iostream>
using namespace std;
int main(int argc ,char *argv[])
{
int x,y; //定义两个整型变量
int*p1,*p2; //定义两个整型指针
p1 = &x ,p2 = &y; //给指针变量 p1,p2 赋值
*p1 = 10,*p2 = 20; //给两个指针赋值
cout<<a<<'\t'<<b<<endl; //直接访问并输出
// '\t' 的意思是:它是一个转义字符,相当于Tab键,可以使两个输出的数,保持一定的间距,便于阅读。
cout<<*p1<<'\t'<<*p2<<endl; //指针变量引用
return 0;
}
注意:绝不能对未赋值的 指针变量 作 “指向” 运算