gpt4 book ai didi

c++ - 如何声明和分配指针

转载 作者:太空宇宙 更新时间:2023-11-04 07:31:13 24 4
gpt4 key购买 nike

我想用一个值(如 1000)声明和初始化一个指针,我不想使用第二个变量。请看下面:

int *p = &1000;
Output: error : & on Constant

int *p = (int *)1000;
Output: 0000003E8

int *p = new int(1000);
Output: 1000

因为,前两种方法没有给出预期的输出。所以,我想知道哪一个是正确的方法,为什么?

Reference

最佳答案

指针的全部意义(没有双关语意)是指向另一个变量(或者至少指向一些内存——可以是一 block 动态分配的内存,就像你的第三个例子一样, 而不是实际变量。

尝试用整型文字来初始化它没有多大意义。使用转换为指针类型的整数文字对其进行初始化仅在极其有限的情况下才有意义——它使您能够直接读/写该绝对内存地址。这在小型嵌入式系统之类的东西上是有意义的,它可能具有可以在该地址访问的内存映射设备之类的东西。否则,它几乎毫无意义和无用。

作为术语的旁白:您实际上是在定义一个指针,而不仅仅是声明它。声明类似于:

extern int *p;

这告诉编译器在别处(即在其他翻译单元中)定义的指针的存在。它最常出现在标题中。因为它只是告诉编译器有关指针的信息,所以它不能包含声明。

关于c++ - 如何声明和分配指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13639051/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com