Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C语言中的指针初始化概念_C_Pointers_Initializing - Fatal编程技术网

C语言中的指针初始化概念

C语言中的指针初始化概念,c,pointers,initializing,C,Pointers,Initializing,为什么这是错误的 char *p; *p='a'; 这本书只说-使用未初始化的指针。 谁能解释一下这是怎么回事吗 是的,它可能会导致运行时错误,因为它是。指针变量已定义(但未正确初始化为有效内存位置),但它需要内存分配来设置值 char *p; p = malloc(sizeof(char)); *p = 'a'; 当malloc成功时,它将工作。请试用。指针未初始化,即它未指向您分配的对象 char c; char *p = &c; *p = 'c'; 或 您使用了解引用操

为什么这是错误的

char *p;   
*p='a';
这本书只说-使用未初始化的指针。
谁能解释一下这是怎么回事吗

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

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

malloc
成功时,它将工作。请试用。

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

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

您使用了解引用操作符来访问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

希望这有帮助。

好的,您的意思是我们需要将指针强制指向某个位置吗。然后只有它能被使用。。我正在尝试获取初始化。@RavirajGardi:是:如果指针尚未指向已知位置,则无法安全地使用它-只能将其分配给以使其指向定义的位置或使其成为空指针。该指针可以由malloc()o通过获取其他字符/字符数组的地址来初始化,已拥有存储空间,具有和操作员(的地址)。p=&mycharvar;分配堆内存并不总是有用的(更不用说必要了)。指针可以很容易地指向堆栈上的变量。我们不知道OP希望如何使用该变量,但堆栈可能是更好的选择-忘记释放内存的风险更小。两个选项见P_uuj_uu的答案。第1行中的代码应为
char c:-)您还可以解释这两种初始化之间的区别。@TomKuschel的书是用来解释的。不是QAportals@P__J__:堆栈溢出用于解释。如果声明指针,它必须指向某个内存位置。这非常有用。
char *c; //a pointer variable is being declared 
*c='a';
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