我是C的新手,目前我正在努力了解指针是如何工作的.
这是一个困扰我的问题:
据我所知,在为指针赋值之前,你应该为该指针分配一定的内存(如果我错了,请纠正我:)),如下面的代码:
int main(void) {
int i;
int * ptr = (int *)malloc(sizeof(int));
i = 2;
*ptr = 5;
printfn("%d",*ptr);
free(ptr);
}
Run Code Online (Sandbox Code Playgroud)
但是,在C语句中声明字符串时,就像:
char *p = "Hello world";
Run Code Online (Sandbox Code Playgroud)
无需分配内存.
是什么原因,它是如何工作的?如果我遗失了什么,请提醒我.
char *p = "Hello world";
你创建了一个指针并将其指向一个常量字符串.编译器将其放在标记为只读的内存部分中.
它没有名称,并且具有静态存储持续时间(意味着它在程序的整个生命周期中存在); 和一个名为pointer-to-char的变量,称为p,用该未命名的只读数组中第一个字符的位置初始化.