小编use*_*653的帖子

用于存储字符串文字常量存储池和ROM的字是否相同

我正在阅读Head First C书,我读到我们无法更改字符串文字,因为它存储在一个只读内存的常量内存池中.所以朋友是这个恒定的内存池和系统的ROM都是一回事.或者在ROM以外的内存中还有另一个常量的内存池.如果我声明一个字符串它将存储在ROM中,而如果我声明一个int或其他任何东西它将进入RAM?这是真的

c string string-literals

3
推荐指数
1
解决办法
133
查看次数

为什么值字符串文字会发生变化

main()
{
  char *c="abhishek";
  int i;
  c[2]=90;
  for(i=0;i<12;i++)
  {
    printf("%c",c[0])
  }
}
Run Code Online (Sandbox Code Playgroud)

这里的输出是abZishek.但这会导致总线错误,因为这是一个字符串文字,我们无法更改其值.为什么c变化的价值?

c c++ string-literals undefined-behavior

0
推荐指数
1
解决办法
162
查看次数

for循环第一个语句应该是声明

main ()
{
      char i = 0;
      for (i <= 5 && i >= -1; ++i; i > 0)
          printf ("%d", i);
      getch ();
}
Run Code Online (Sandbox Code Playgroud)

我是一名Java学生,最近我开始做C程序.我在C书中看到了这个问题.我对这个程序有以下疑问:

  1. 这个程序汇编得很好.这应该不会导致编译错误吗?for循环的第一部分应该是一个声明,但这里是一个布尔表达式.
  2. 输出是1,2,3,4.....126,127,-128....-2,-1.为什么输出停在-1?这应该是一个无限的系列,永远重复上述系列.

c

0
推荐指数
1
解决办法
150
查看次数

标签 统计

c ×3

string-literals ×2

c++ ×1

string ×1

undefined-behavior ×1