1)初始化我使用的指针:
int number, *Pnumber;
Pnumber=&number;
number=10;
我这样做对吗?
关于什么:
int *Pnumber;
*Pnumber=10;
当我编译它时,我得到:
RUN FAILED(退出值1,总时间:858ms)
顺便提一句。我需要使用 free(Pnumber) 来释放内存吗?
1)初始化我使用的指针:
int number, *Pnumber;
Pnumber=&number;
number=10;
我这样做对吗?
关于什么:
int *Pnumber;
*Pnumber=10;
当我编译它时,我得到:
RUN FAILED(退出值1,总时间:858ms)
顺便提一句。我需要使用 free(Pnumber) 来释放内存吗?
我这样做对吗?
是的,你是。
关于什么:
`int *Pnumber;
*Pnumber=10;`
Pnumber
是一个未初始化的指针。取消引用此指针会导致未定义的行为。Pnumber
必须指向分配的内存(指向变量或动态分配的内存区域)。
顺便提一句。我需要使用 free(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 位操作系统架构中将变量的地址保存在 32 位中,始终使用指针不'不管你指的是什么类型