[英]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.