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