使用指针

时间:2017-08-27 08:29:20

标签: c string

有什么区别:

char arr[20]="I am a string"

char *arr="I am a string"

如何仅使用指针初始化数组?

3 个答案:

答案 0 :(得分:2)

第一个是清楚的,它是一个数组初始化,而第二个意味着字符指针* arr指向未命名的静态数组,它将存储字符串“我是一个字符串”。

答案 1 :(得分:1)

一个区别在于分配的存储空间大小。第一个表达式分配20个字符,但第二个表达式分配字符串的长度(13个字符)。

this post中提到了第二个区别。这是关于如何分配这些变量的讨论。

答案 2 :(得分:1)

在第一种情况下,您部分初始化堆栈分配的数组,其中14个字符取自"I am a string"字符串文字所代表的缓冲区。

在第二种情况下,您正在使用指向缓冲区的指针初始化堆栈分配的指针,该缓冲区的静态存储持续时间由"I am a string"字符串文字表示。另请注意,在第二种情况下,您应该使用const char *arr