您的位置:首页 > 编程语言 > C语言/C++

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: