相关疑难解决方法(0)

char s []和char*s有什么区别?

在C中,可以在声明中使用字符串文字,如下所示:

char s[] = "hello";
Run Code Online (Sandbox Code Playgroud)

或者像这样:

char *s = "hello";
Run Code Online (Sandbox Code Playgroud)

那么区别是什么呢?我想知道在编译和运行时的存储持续时间实际发生了什么.

c string constants char

495
推荐指数
6
解决办法
33万
查看次数

访问数组越界有多危险?

访问其边界之外的数组有多危险(在C中)?有时候我会从数组外部读取(我现在理解我然后访问我的程序的某些其他部分使用的内存,甚至超过它)或者我试图将值设置为数组之外的索引.该程序有时会崩溃,但有时只是运行,只会产生意想不到的结果.

现在我想知道的是,这真的有多危险?如果它损坏我的程序,那就不是那么糟糕了.另一方面,如果它打破了我的程序之外的东西,因为我以某种方式设法访问一些完全不相关的内存,那么它是非常糟糕的,我想.我读了很多"任何可能发生的事情","分割可能是最不好的问题","你的硬盘可能会变成粉红色,独角兽可能会在你的窗下唱歌",这很好,但真正的危险是什么?

我的问题:

  1. 从阵列外部读取值会损坏我的程序之外的任何东西吗?我想象只是看事情不会改变任何东西,或者它会改变我碰巧触及的文件的'last time opened'属性?
  2. 除了我的程序之外,在数组外部设置值可以破坏任何东西吗?从这个 Stack Overflow问题我收集到可以访问任何内存位置,没有安全保证.
  3. 我现在从XCode中运行我的小程序.这是否为我的程序提供了一些额外的保护,它无法到达自己的内存之外?它会伤害XCode吗?
  4. 有关如何安全地运行我的固有错误代码的任何建议?

我使用OSX 10.7,Xcode 4.6.

c memory arrays

219
推荐指数
6
解决办法
5万
查看次数

C中的文字字符串和字符数组是什么?

首先,我包含了C++,因为C++只是C的父级,所以我猜这两个答案都适用于此,尽管我在这个问题中要求并关注的语言是C,而不是C++.

不久前我开始阅读C书"Head First C".在本书(第43/278页)中,它将为您回答一个问题.文字字符串和字符数组之间是否存在任何差异.

由于我不知道字符串是什么,所以我完全被抛出了.我理解一个字符串只是一个字符数组,但是什么使得'字符串'文字?如果C实际上没有为字符串提供任何类(如C#或Java等现代语言),为什么它在C中提到字符串.

任何人都可以帮助清理这种混乱吗?我真的很难理解微软在这里对此有何看法,并认为我需要一个我能理解的更简单的解释.

c

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

标签 统计

c ×3

arrays ×1

char ×1

constants ×1

memory ×1

string ×1