我是 C 新手,目前我正在尝试了解指针是如何工作的。
这是一个让我困惑的问题:
据我所知,在给指针赋值之前,应该为该指针分配一定的内存(如果我错了,请纠正我:)),如下面的代码:
int main(void) {
int i;
int * ptr = (int *)malloc(sizeof(int));
i = 2;
*ptr = 5;
printfn("%d",*ptr);
free(ptr);
}
但是,在 C 中声明字符串时,就像:
char *p = "Hello world";
无需分配内存。
原因是什么?它是如何工作的?如果我遗漏了什么,请提醒我。
char *p = "Hello world";
您创建了一个指针并将其指向一个常量字符串。编译器将其放入标记为只读的内存部分中。
它没有名称并且具有静态存储持续时间(意味着它在程序的整个生命周期内都存在);和一个指向字符的指针类型的变量,称为p
,它是使用该未命名的只读数组中第一个字符的位置进行初始化的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)