c - 在c声明期间初始化指针

标签 c

以下是如何工作的?

char *str="string";
printf("str is %s\n",str);

但是下面的给出了段错误

int *i=3;
printf("int is %d\n",*i);

最佳答案

"string" 之类的字符串文字是存储在只读内存位置的 char[7]。数组名称可以衰减为指向其第一个元素的指针,因此可以将 char* 初始化为这样的文字表达式。

3 之类的整型文字只是一个不存储在任何地方的 int 右值。初始化 int* i = 3i 初始化为指向值为 3 的内存位置。这不太可能是有效位置,这就是为什么取消引用 i 会导致分段违规。

关于c - 在c声明期间初始化指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29184343/

相关文章:

c - 哪个 API 用于在 Windows 上加密休眠文件?

C:如何在 2D 结构数组中释放 malloc 的字符串

c - 在c中将int保存到二进制文件

c - 欧拉计划问题 10 - 高效算法

c - 将字符串存储在共享内存 C 上

c++ - 1亿节点大图的C++表示

c - 如何将用户输入与存储在文件中的字符串进行比较?

c - 使用 FFTW 取消定义架构 x86_64 的符号

ios - 构建 iOS 项目得到架构 i386 错误的重复符号

C数据结构如何声明