C++的指针

来源:互联网 发布:类似于柏拉图软件 编辑:程序博客网 时间:2024/06/15 09:26

傻傻搞不懂的C++指针———-2
1.指针的声明
在网上查到,指针进行声明时,会被随机分配指向随机地址,该地址是不明确并且不可访问的。所以要使用该指针,必须对它进行分配存储空间,否则一旦有对该指针的使用,就会报错崩溃。(没有使用不会崩)
而引用声明的时候,直接分配的存储空间,声明后即可通过&k获得其地址。
如:为了给一个整数动态分配存储空间,可以使用下面的语句来声明一个整型指针变量

int *y

2.分配存储空间

操作符new分配一块能存储一个整数的空间,并将指向该空间的指针返回给y,y是对整数指针的引用,而*y则是对整数本身的引用。

y = new int;

3.为*y赋值
在刚分配的空间中存储一个整数值,如10

*y=10;

4.合并

int *y = new int;*y = 10;

或者

int *y = new int(10);

或者

int *y;y = new int(10);

5.举例

// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <iostream>using namespace std;int main(){    int k = 5;    int *p;//声明一个指针    p = &k;//将k这个变量所在的地址    int *b = p + 1;//int是四个字节,假设k所在地址为00F9F814,则加上1后的地址为00F9F818,    //为什么加1呢,因为只存储了一个int类型的整数    *b = 6;//给b这个位置的空间存储一个整数为6    cout << p << endl;    cout << b << endl;    cout <<"p这个位置存储的数为:"<< *(b - 1) << endl;    cout <<"b这个位置存储的数为:"<< *(p + 1) << endl;    system("pause");    return 0;}

解释int *b = p + 1;
内存地址是以字节为单位的,一个int是4个字节,加上1表示加上1个int类型那么大的字节数即4个字节,所以会发现内存地址增加了4个字节。如果这个p指针和b指针它不是int类型的指针,p指针加1,内存地址就不只是加4了,比如double类型。
要分清楚是指针加1还是内存地址加1,指针加1意味着内存地址加4

这里写图片描述

原创粉丝点击