C++学习总结_指针(1)
2011-03-27 22:53
260 查看
一、指针是用来保存变量在内存中对应的地址
#include <iostream>
using namespace std;
int main()
{
int i = 1;
int *p;
p = &i;
cout<<"P:"<<p<<endl;
cout<<"&i:"<<&i<<endl;
return 0;
}
此段代码输出变量在i内存中的地址和p中存的地址都一样,证明指针变量p保存了i的地址。
二、如果定义了一个指针,而不给该指针赋值,则该指针就会变为一个失控指针,该指针可以指向任何变量的内存地址,此时的与该指针对应的修改将是没有办法控制,一旦某个变量被改了,程序员自己都不知道,这样十分可怕,也不是我们想要的。
解决办法就是初始化指针。
#include <iostream>
using namespace std;
int main()
{
int *p = 0;//指针变量初始化不会指向任何地方,因为是一个空值。
cout<<"p:"<<p<<endl;
return 0;
}
三、指针不能乱用,每个指针都有自己的基类型:即该类型的指针是存储哪种基本类型变量在内存中的地址
利用int类型的指针变量就不能赋给double类型的指针变量,下面是一个关于不同类型指针变量发生变化的结果比较
#include <iostream>
using namespace std;
int main()
{
double *p3;
int *p4;
double x = 12.56;
int y = 6;
double *p1 = &x;
int *p2 = &y;
cout<<"P1:"<<p1<<endl;
cout<<"p2:"<<p2<<endl;
p3 = (p1++);
p4 = (p2++);
cout<<"P3:"<<p3<<endl;
cout<<"p4:"<<p4<<endl;
cout<<"P3-p1:"<<((int)p1-(int)p3)<<endl;
cout<<"p4-p2:"<<((int)p2-(int)p4)<<endl;
return 0;
}
四、指针变量前边*的含义:存储在此地址处的值,
在下面的代码中指针变量p前边*的含义是:存储在p处的地址是a变量在内存中的地址,所以*p对应的变量a的值,所以运行程序输出1
#include <iostream>
using namespace std;
int main()
{
int a = 1;
int *p;
p = &a;
cout<<*p<<endl;
return 0;
}
#include <iostream>
using namespace std;
int main()
{
int i = 1;
int *p;
p = &i;
cout<<"P:"<<p<<endl;
cout<<"&i:"<<&i<<endl;
return 0;
}
此段代码输出变量在i内存中的地址和p中存的地址都一样,证明指针变量p保存了i的地址。
二、如果定义了一个指针,而不给该指针赋值,则该指针就会变为一个失控指针,该指针可以指向任何变量的内存地址,此时的与该指针对应的修改将是没有办法控制,一旦某个变量被改了,程序员自己都不知道,这样十分可怕,也不是我们想要的。
解决办法就是初始化指针。
#include <iostream>
using namespace std;
int main()
{
int *p = 0;//指针变量初始化不会指向任何地方,因为是一个空值。
cout<<"p:"<<p<<endl;
return 0;
}
三、指针不能乱用,每个指针都有自己的基类型:即该类型的指针是存储哪种基本类型变量在内存中的地址
利用int类型的指针变量就不能赋给double类型的指针变量,下面是一个关于不同类型指针变量发生变化的结果比较
#include <iostream>
using namespace std;
int main()
{
double *p3;
int *p4;
double x = 12.56;
int y = 6;
double *p1 = &x;
int *p2 = &y;
cout<<"P1:"<<p1<<endl;
cout<<"p2:"<<p2<<endl;
p3 = (p1++);
p4 = (p2++);
cout<<"P3:"<<p3<<endl;
cout<<"p4:"<<p4<<endl;
cout<<"P3-p1:"<<((int)p1-(int)p3)<<endl;
cout<<"p4-p2:"<<((int)p2-(int)p4)<<endl;
return 0;
}
四、指针变量前边*的含义:存储在此地址处的值,
在下面的代码中指针变量p前边*的含义是:存储在p处的地址是a变量在内存中的地址,所以*p对应的变量a的值,所以运行程序输出1
#include <iostream>
using namespace std;
int main()
{
int a = 1;
int *p;
p = &a;
cout<<*p<<endl;
return 0;
}
相关文章推荐
- C++学习笔记之——c++多态性的类指针总结
- C\C++指针(地址)学习总结(附内存分配方式)
- c++关于数组,指针的学习总结
- C++学习总结_指针(2)
- C/C++指针错误与调试相关学习总结
- C++学习总结_指针访问堆内存中创建的对象
- C++ 数组和指针学习总结
- C/C++ 日常学习总结(第二十一篇)智能指针shared_ptr
- C++学习总结_为什么要使用指针
- C++学习总结_this指针
- C/C++日常学习总结(第十一篇)函数指针
- C++学习总结_指针常见错误
- C/C++日常学习总结(第七篇)常引用&指针的理解
- 关于C++智能指针的学习与总结
- C++学习总结_指针修改变量的数据
- C++ 数组和指针学习总结
- C/C++学习笔记8:内存中数据对齐的问题总结
- C++程序设计-2014年10月-月末学习总结
- 指针学习总结
- 【学习C++】 二维数组和指针