首页 > 编程语言 > 详细

(4)C++ 复合类型-指针

时间:2019-09-13 11:32:40      阅读:82      评论:0      收藏:0      [点我收藏+]

 篇幅长从 https://www.cnblogs.com/buchizaodian/p/11511256.html 提取出来

 

七、指针和自由存储空间

 1.寻址运算符 *

#include<iostream>
using namespace std;
void main() {
    int a = 3;
    int b = 4;
    cout << &a<<endl;
    cout << &b << endl;
    cout << sizeof(a) << endl;
}

打印

012FFA34
012FFA28
4

为什么地址+4个字节后不是连续的?
根据系统,有可能是不连续的。

为什么b的地址要比a的地址小?

 栈的声明地址从高到低。

根据系统也是有可能不同...

 

2.指针

定义指针只要在类型和变量中间即可,中间的空格会被忽略

    int*p = &a;
    int* p = &a;
    int *p = &a;
    int   *   p = &a;

--

#include<iostream>
using namespace std;
void main() {
    int a = 6;
    int *p = &a;
    cout << &a << endl;//a的地址
    cout << p << endl;//指针p中存放的值,这个值是个地址
    cout << *p << endl;//p地址指向的值
    cout << &p << endl;//p本身也有个地址,不过目前没有人引用它
}

技术分享图片

 

 3.指针的危险性

 C++创建指针时计算机将分配用来存储地址内存,但不会分配指针所指数据的内存。

 

 

4.地址和数字的区别

地址和整数是两个不同的类型(虽然看上去一样)

    int *p = 0x00ED1821;//错误
    int *p = (int *)0x00ED1821;//正确方式,转成地址

 

这里的 0x00ED1821 是一个十六进制数值,而不是一个地址。

 

5.使用new分配内存

(1)编译时分配内存

int a = 6;
int* p = &a;

像这种方式,是编译时分配的内存

(3)运行时分配内存

指针的最大作用是程序运行阶段分配未命名的内存存储数据

int* p = new int;

这种方式下只能通过指针来访问内存,new int 会根据类型所占用的空间找到一个长度合适的内存块,并返回地址

 

 

 

八、指针、数组和指针算术

 

(4)C++ 复合类型-指针

原文:https://www.cnblogs.com/buchizaodian/p/11516266.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!