为什么这是错误的?
char *p;
*p='a';
这本书只说了-使用未初始化的指针。 请任何人解释这是怎么回事?
答案 0 :(得分:2)
是的,由于它是undefined behavior,因此可能会导致运行时错误。指针变量已定义(但未正确初始化为有效的内存位置),但需要分配内存以设置值。
$dynamicKey = array_keys($array)[0];
foreach($array[$dynamicKey] as $item){
if ($item['type'] == 'error')
unset($array[$dynamicKey][$key]);
}
char *p;
p = malloc(sizeof(char));
*p = 'a';
成功时它将起作用。请尝试。
答案 1 :(得分:2)
指针未初始化,即不指向您分配的对象。
char c;
char *p = &c;
*p = 'c';
或
char *p = malloc(1);
*p = 'c';
答案 2 :(得分:1)
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
希望这会有所帮助。