繁体   English   中英

C中的指针初始化概念

[英]Pointer initialization concept in C

为什么这是错误的?

char *p;   
*p='a';

本书只说了-使用未初始化的指针。 请任何人解释这是怎么回事?

是的,由于它是未定义的行为 ,因此可能会导致运行时错误。 指针变量已定义(但未正确初始化为有效的内存位置),但需要分配内存以设置值。

char *p;
p = malloc(sizeof(char));
*p = 'a';

malloc成功时它将起作用。 请尝试一下。

指针未初始化,即不指向您分配的对象。

char c;
char *p = &c;
*p = 'c';

要么

char *p = malloc(1);
*p = 'c';
char *c; //a pointer variable is being declared 
*c='a';

您使用了解引用运算符来访问c所指向的变量的值,但是指针变量c没有指向任何变量,这就是您遇到运行时问题的原因。

char *c; //declaration of the pointer variable
char var; 
c=&var; //now the pointer variable c points to variable var.
*c='a'; //value of var is set to 'a' using pointer 
printf("%c",var); //will print 'a' to the console

希望这会有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM