C中的指针初始化概念

时间:2018-12-16 07:17:58

标签: c pointers initializing

为什么这是错误的?

char *p;   
*p='a';

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

3 个答案:

答案 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

希望这会有所帮助。