吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4451|回复: 3
收起左侧

[其他转载] 分享!我做的C++指针笔记~(部分)

[复制链接]
明次 发表于 2009-6-17 21:52
例子①:取地址符
#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   //读取该地址处的值(不是内存地址)

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

zapline 发表于 2009-6-17 22:14
指针就是地址嘛
mxc123 发表于 2009-6-18 00:15
头像被屏蔽
smircl 发表于 2009-6-20 12:16
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-17 04:22

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表