C中的指针初始化概念
Pointer initialization concept in C
为什么这是错误的?
char *p;
*p='a';
书上只说-未初始化指针的使用。
请问谁能解释一下这是怎么回事?
是的,它可能会导致 运行 次错误,因为它是 undefined behavior。指针变量已定义(但未正确初始化为有效的内存位置),但需要内存分配来设置值。
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
希望对您有所帮助。
为什么这是错误的?
char *p;
*p='a';
书上只说-未初始化指针的使用。 请问谁能解释一下这是怎么回事?
是的,它可能会导致 运行 次错误,因为它是 undefined behavior。指针变量已定义(但未正确初始化为有效的内存位置),但需要内存分配来设置值。
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
希望对您有所帮助。