分享!我做的C++指针笔记~(部分)
例子①:取地址符#include <iostream>
using namespace std;
int main()
{
int i;
cout<<&i<<endl; //获取变量i的内存地址
return 0;
}
【解释】:&是取地址符,可用来获取变量的地址。
例子②:定义一个指针
#include <iostream>
using namespace std;
int main()
{
int i;//定义一个变量
int *p; //定义一个变量p,*号说明这个p是一个指针。
p=&i; //把i变量的地质赋给指针p(注意只有指针才能接受地址)
cout<<"&i:"<<&i<<endl;
cout<<"*p:"<<p<<endl;
}
【解释】:输出结果是一样的。
例子③:
#include <iostream>
using namespace std;
int main()
{
int *p=0;
cout<<"*p"<<*p<<endl;
return 0;
}
【解释】:将指针初始化为0;
例子④:
#include <iostream>
using namespace std;
int main()
{
double a=3.14;
int b=6;
int *p1=&b;
double *p2=&a;
cout<<"p1:"<<p1<<endl;//这注意一下p1前不加*号
cout<<"p2:"<<p2<<endl;
p1++;//指针变量自加
p2++;//指针变量自加
cout<<endl;
cout<<"p1:"<<p1<<endl;
cout<<"p2:"<<p2<<endl;//多出了8个字节
return 0;
}
【解释】:指针与类型
例子⑤:也可以这样的
#include <iostream>
using namespace std;
int main()
{
int a;
int *p=&a;
cout<<&a<<endl;
cout<<p<<endl;
}
【解释】:输出结果一样..
例子⑥:知识点 注意!
#include <iostream>
using namespace std;
int main()
{
int a=1;
int *p;
p=&a;
cout<<*p<<endl;//注意这里!这里输出是a变量的值,也就是1
}
【解释】:输出结果为1
例子⑦:通过指针来访问值
#include <iostream>
using namespace std;
int main()
{
int a=1;
int *p;
p=&a;
cout<<"*p:"<<*p<<endl;//1
cout<<"p:"<<p<<endl;//2
cout<<"&a:"<<&a<<endl;//3
cout<<"a:"<<a<<endl;//4
}
【解释】:1和4的输出结果相同;2和3的输出结果相同
例子⑧:容易混淆
#include <iostream>
using namespace std;
int main()
{
int i;
int *p=0;
cout<<"i的内存地址为:"<<&i<<endl;
cout<<"p的地址为:"<<p<<endl;
cout<<"p的内存地址为:"<<&p<<endl;
i=3;
cout<<"i的内存地址为:"<<&i<<endl;
p=&i;
cout<<"p的值为:"<<p<<endl;
cout<<"p的内存地址为:"<<&p<<endl;
}
【解释】:指针变量本身也有内存地址的哦!
例子⑨:读取地址内容与读取内存地址的区别
#include <iostream>
using namespace std;
int main()
{
int a=1;
int *p=&a;
cout<<*p<<endl;//输出1
cout<<p<<endl;
}
【解释】:*p是读取该地址处的值,由于a赋值给p,故输出1。
例子⑽[推]:指针对数值的操作
#include <iostream>
using namespace std;
int main()
{
typedef unsigned short int ut;
ut i=5;
ut *p=0;
p=&i;
cout<<"i:"<<i<<endl;
cout<<"*p:"<<*p<<endl;
cout<<"用指针修改数据后的值为....\n";
*p=90;//这里注意一下!
cout<<"i:"<<i<<endl;
cout<<"*p:"<<*p<<endl;
cout<<"用i修改数据后的值为....\n";
i=9;
cout<<"i:"<<i<<endl;
cout<<"*p:"<<*p<<endl;
}
【解释】
例子⒒:把一个变量的地址赋予指向相同数据类型的指针变量
#include <iostream>
using namespace std;
int main()
{
int i;
int *p1;
int *p2;
p1=&i;
p2=p1;
cout<<p1<<endl;
cout<<p2<<endl;
}
【解释】:两次输出结果都是一样的!
知识点:&是取地址符
知识点:*是取内容符,用来表示指针变量所指的变量。
知识点:*P是定义一个指针变量,名为P
知识点:指针:用来保存内存地址的变量。
知识点:由于每个被定义的变量都有自己的地址,因此你完全可以使用指针来存放任何已被定义的变量地址,既使它没有被赋值。
知识点:如果我们定义了一个指针变量后不用它来保存地址,那么这个指针就是一个失控指针,它可以指向任何地址,并且对该地址数据进行修改或者删除,后果是非常可怕的。要想解决这个问题我们就要定义一个空指针,详情请看例子3。
知识点:指针只能接受与自身相同类型的变量。
知识点:指针变量自身也有内存地址。
知识点:int *p//定义一个指针变量,名字为p。
知识点:*p //读取该地址处的值(不是内存地址) 指针就是地址嘛:lol 学VC中
页:
[1]