C++ 指针
2016-05-12 11:24
323 查看
地址: 计算机要找到变量i,就需要先找到i的地址,也就是i在内存中的编号,然后通过该编号,计算机可以访问i并且对它进行操作。
指针: 指针就是用来保存内存地址的变量。
由于每个被定义的变量都有自己的地址,因此你完全可以使用指针来存放任何已被定义的变量的地址,即使它没有被赋值。
指针使用的注意点:
1. 指针与变量类型: 指针只能存储与它类型相同的变量的地址
2. 用指针来访问值:运算符号*被称为间接引用运算符,当使用星号*时,就读取它后面变量中所保存的地址处的值。
3.指针地址、指针保存的地址和该地址的值
指针地址:指针自身的地址
指针保存的地址:
指针保存的地址处的值:
#include
"address.hpp"
#include <iostream>
using namespace
std;
//int main()
//{
//// int a;
// int *p = 0;
//// p=&a;
//// cout<<"&a:"<<&a<<endl;
// cout<<"p:"<<p<<endl;
// return 0;
//}
int main()
{
int a=1;
int *p;
p=&a;//用指针变量p来保存变量a的地址
cout<<"&a:"<<&a<<endl;
cout<<"a:"<<a<<endl;
cout<<"p:"<<p<<endl;
cout<<"*p:"<<*p<<endl;
//读取变量p中保存的地址处的值
return 0;
}
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;
return 0;
}
4.指针对数值的操作(修改数值变量的对应地址的值,从而达到修改变量的值)
typedef unsigned short int ut;
int main()
{
ut i;
ut *p=0;
i=5;
p=&i;
cout<<"i="<<i<<endl;
cout<<"*p="<<*p<<endl;
cout<<"用指针来修改存放在i中的数据...\n";
*p=90;
cout<<"i="<<i<<endl;
cout<<"*p="<<*p<<endl;
cout<<"用i来修改存放在i中的数据...\n";
i=9;
cout<<"i="<<i<<endl;
cout<<"*p="<<*p<<endl;
return 0;
}
5、更换指针保存的地址
int main()
{
int i=10;
int j=20;
int *p=&i;
cout<<"i:"<<"\t"<<i<<endl;//10
cout<<"&i:"<<"\t"<<&i<<endl;//i的地址
cout<<"j:"<<"\t"<<j<<endl;//20
cout<<"&j:"<<"\t"<<&j<<endl;//j的地址
cout<<"p:"<<"\t"<<p<<endl;//p保存i的地址
cout<<"*p:"<<"\t"<<*p<<endl;//10
p=&j;//p
保存j的地址
cout<<"更换地址后\n";
cout<<"i:"<<"\t"<<i<<endl;//10
cout<<"&i:"<<"\t"<<&i<<endl;//i的地址
cout<<"j:"<<"\t"<<j<<endl;//20
cout<<"&j:"<<"\t"<<&j<<endl;//i的地址
cout<<"p:"<<"\t"<<p<<endl;//j的地址
cout<<"*p:"<<"\t"<<*p<<endl;//20
return 0;
}
指针: 指针就是用来保存内存地址的变量。
由于每个被定义的变量都有自己的地址,因此你完全可以使用指针来存放任何已被定义的变量的地址,即使它没有被赋值。
指针使用的注意点:
1. 指针与变量类型: 指针只能存储与它类型相同的变量的地址
2. 用指针来访问值:运算符号*被称为间接引用运算符,当使用星号*时,就读取它后面变量中所保存的地址处的值。
3.指针地址、指针保存的地址和该地址的值
指针地址:指针自身的地址
指针保存的地址:
指针保存的地址处的值:
#include
"address.hpp"
#include <iostream>
using namespace
std;
//int main()
//{
//// int a;
// int *p = 0;
//// p=&a;
//// cout<<"&a:"<<&a<<endl;
// cout<<"p:"<<p<<endl;
// return 0;
//}
int main()
{
int a=1;
int *p;
p=&a;//用指针变量p来保存变量a的地址
cout<<"&a:"<<&a<<endl;
cout<<"a:"<<a<<endl;
cout<<"p:"<<p<<endl;
cout<<"*p:"<<*p<<endl;
//读取变量p中保存的地址处的值
return 0;
}
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;
return 0;
}
4.指针对数值的操作(修改数值变量的对应地址的值,从而达到修改变量的值)
typedef unsigned short int ut;
int main()
{
ut i;
ut *p=0;
i=5;
p=&i;
cout<<"i="<<i<<endl;
cout<<"*p="<<*p<<endl;
cout<<"用指针来修改存放在i中的数据...\n";
*p=90;
cout<<"i="<<i<<endl;
cout<<"*p="<<*p<<endl;
cout<<"用i来修改存放在i中的数据...\n";
i=9;
cout<<"i="<<i<<endl;
cout<<"*p="<<*p<<endl;
return 0;
}
5、更换指针保存的地址
int main()
{
int i=10;
int j=20;
int *p=&i;
cout<<"i:"<<"\t"<<i<<endl;//10
cout<<"&i:"<<"\t"<<&i<<endl;//i的地址
cout<<"j:"<<"\t"<<j<<endl;//20
cout<<"&j:"<<"\t"<<&j<<endl;//j的地址
cout<<"p:"<<"\t"<<p<<endl;//p保存i的地址
cout<<"*p:"<<"\t"<<*p<<endl;//10
p=&j;//p
保存j的地址
cout<<"更换地址后\n";
cout<<"i:"<<"\t"<<i<<endl;//10
cout<<"&i:"<<"\t"<<&i<<endl;//i的地址
cout<<"j:"<<"\t"<<j<<endl;//20
cout<<"&j:"<<"\t"<<&j<<endl;//i的地址
cout<<"p:"<<"\t"<<p<<endl;//j的地址
cout<<"*p:"<<"\t"<<*p<<endl;//20
return 0;
}
相关文章推荐
- C++11的新特性
- google test 轻松编写C++单元测试
- C++类(Class)总结
- Visual C++中 #include "stdafx.h" 头文件的用法
- C语言指针变量的概念
- 使用jni实现在C语言中打印log信息
- iOS OC语言: Block底层实现原理
- C语言实现去除字符串中空格的简单实例
- C++ 拷贝构造函数 赋值构造函数
- 发现一个c++ vector sort的bug
- error C2664: 'CreateThread' : cannot convert parameter 3 from 'int (void *)'
- C++ 文件类型分析
- POJ 1704-Georgia and Bob棋子移动(Nim博弈)
- C语言中内存分配
- C++ const &函数名
- C++ 获得当前执行文件的路径
- C++ 字节对齐专题
- 回调函数_数组
- C++Builder中__closure关键字的用法
- 在cmd命令行下编译运行C/C++源文件