1)初始化我使用的指针:
int number, *Pnumber;
Pnumber=&number;
number=10;
我这样做了吗?
怎么样:
int *Pnumber;
*Pnumber=10;
当我编译它时,我得到:
RUN FAILED(退出值1,总时间:858ms)
顺便说一句。我是否需要使用免费(Pnumber)来释放内存?
答案 0 :(得分:5)
我这样做了吗?
是的,你是。
怎么样:
`int *Pnumber;
*Pnumber=10;`
Pnumber
是一个单位指针。取消引用此指针会导致未定义的行为。 Pnumber
必须指向已分配的内存(对于变量或动态分配的内存区域)。
顺便说一句。我是否需要使用免费(Pnumber)来释放内存?
只要您不使用malloc
,请不要使用free
。
答案 1 :(得分:2)
在第一个版本中,您将指针Pnumber指向已经分配的内存,因此您可以更改指针指向的值。这个版本是正确的。在第二个版本中,您永远不会指定指向的指针(它保持未初始化),因此当您尝试访问内存时,这将导致错误。所以第二个版本不正确。
答案 2 :(得分:1)
你的第一种方法是正确的。
但是错了:
int *Pnumber;
*Pnumber=10;
因为指针没有指向有效的内存,而在第一种方法中它指的是。
答案 3 :(得分:1)
第一个是正确的
在第二种情况下,您缺少将指针指向内存空间。
指针是一个地址,所以
如果我们有
int *p;
这意味着p是一个地址
和* p是内存地址的内容。
因此在使用
填充内存之前,应将指针指向内存空间*p = 5;
答案 4 :(得分:1)
如果您使用指针,则“指向您所做的变量:
int number, *Pnumber;
Pnumber=&number;
number=10;
Pointer的优势在于您可以节省内存到程序中,因此如果您想更改数字的值,这是一个32位的整数,您可以使用 * Pnumber = 10; 在这里你使用整数,但如果你使用它们的数组或双重或浮动它的大量内存,为什么你最好在32位OS体系结构中保存32位变量的地址总是使用指针在didn'无论你指的是什么类型