[英]Few doubts about pointers in C
1)初始化我使用的指针:
int number, *Pnumber;
Pnumber=&number;
number=10;
我这样做了吗?
关于什么:
int *Pnumber;
*Pnumber=10;
当我编译它时,我得到:
RUN FAILED(退出值1,总时间:858ms)
顺便说一句。 我需要使用免费(Pnumber)来释放内存吗?
我这样做了吗?
是的,你是。
关于什么:
`int *Pnumber;
*Pnumber=10;`
Pnumber
是一个单位指针。 取消引用此指针会导致未定义的行为。 Pnumber
必须指向已分配的内存(对于变量或动态分配的内存区域)。
顺便说一句。 我需要使用免费(Pnumber)来释放内存吗?
只要你不使用malloc
,就不要free
使用。
在第一个版本中,您将指针Pnumber指向已经分配的内存,因此您可以更改指针指向的值。 这个版本是正确的。 在第二个版本中,您永远不会指定指向的指针(它保持未初始化),因此当您尝试访问内存时,这将导致错误。 所以第二个版本不正确。
你的第一种方法是对的。
但这错了:
int *Pnumber;
*Pnumber=10;
因为指针不指向有效内存,而在第一种方法中它指向有效内存。
第一个是正确的
在第二个中,您缺少将指针指向内存空间。
指针是一个地址
如果我们有
int *p;
这意味着p是一个地址
* p是内存地址的内容。
所以在填充内存之前,指针应该指向一个内存空间
*p = 5;
如果您使用指针,则“指向您所做的变量:
int number, *Pnumber;
Pnumber=&number;
number=10;
指针的优点是可以节省内存到程序,所以如果你想改变32位整数的数值,你可以使用* Pnumber = 10; 在这里你使用整数,但如果你使用它们的数组或双重或浮动它的大量内存,为什么你最好在32位OS体系结构中保存32位变量的地址总是使用指针在didn'无论你指的是什么类型
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.