如何在没有 malloc 或 calloc 的情况下给出指针元素

how to give pointers elements without malloc oder calloc

我想知道您是否可以在不使用 malloc 或 calloc 的情况下在 char 指针上分配内存。

举个例子:

char *p;

现在我想这样做

*(p+1) = 'd'
printf("%c", *(p+1));

输出为 'd'。我希望它在没有 malloc 或 calloc

的情况下工作

您需要为指针分配对合适类型和大小的对象的引用。

malloc returns 对合适内存块的引用。

您还可以分配静态(如果在块上下文中使用则自动分配)分配的对象。

char data[2];
char *p;
 /* ... */

p = data;
*(p+1) = 'd'
printf("%c", *(p+1));

所以基本上指针必须引用有效对象。

C只是人类可读的程序集,一切都由程序员来完成。没有花哨的垃圾收集器是事实,但它仍然有一个尖端(更确切地说是一把钝刀和一个给你的文件)。

指针清理是一个您需要了解的术语。一旦创建了指针变量,就需要为其分配一些有效的内存地址。如果当时不可能,则将其分配为 NULL。

char * p; // pointing to random location due to grabage value.
*(p+1) = 'd'; // you are overwiting there
printf("%c", *(p+1)); // printing single character

应该做的是

char *p = NULL;
*(p+1) = 'd'; // this will pop error which you can see in gdb
...
...