我无法找到这个问题的答案(如果是重复的话,我看起来很抱歉)。据我所知,在 C 中初始化 char 数组时大致有两种方法:
char[] a = "Hello";
char * b = "Hello";
Run Code Online (Sandbox Code Playgroud)
这些实现了相同的结果,但“b”的第二次初始化让我感到困惑。我理解“a”的初始化,因为它有点相当于*(char *a) = "Hello" 假设内存已分配等等...但是“b”初始化的语法在我看来就像“b”是一个指针,指向地址“Hello”当然没有任何意义,除非使用 ASCII 值。据我所知,对于整数或其他数据类型,没有与 'b 的初始化等效的东西。如果有人能提供解释那就太好了!我已经使用 C 很长一段时间了,这个问题总是让我有点困扰,我一直无法想到/找到答案
这些达到相同的结果
不完全的。
Run Code Online (Sandbox Code Playgroud)char[] a = "Hello";理解 'a' 的初始化,因为它在某种程度上相当于 *(char *a) = "Hello"
*(char *a) = "Hello"对我来说毫无意义,所以我不同意它是等价的。a是一个数组。它的大小是从初始化器(6 个元素)推导出来的。
Run Code Online (Sandbox Code Playgroud)char * b = "Hello";但在我看来,初始化“b”的语法就像“b”是一个指针,
正确的。b是一个指针,因此它与a数组不同。
这在 C++ 中是不正确的。这是因为字符串文字是const charC++ 中的数组,并且它们不会隐式转换为指向非常量 char 的指针(自 C++11 起)。
指向一个地址“Hello”,这当然没有意义
不正确。b指向“Hello”第一个元素的地址。
| 归档时间: |
|
| 查看次数: |
133 次 |
| 最近记录: |