Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 使用指针初始化字符串_C_String - Fatal编程技术网

C 使用指针初始化字符串

C 使用指针初始化字符串,c,string,C,String,以下两者之间的区别是什么: char arr[20]="I am a string" 及 如何仅使用指针初始化数组?一个区别在于分配的存储大小。第一个表达式分配20个字符,但第二个表达式分配字符串的长度(13个字符) 第二个区别在本文中提到。这将在如何分配这些变量的方式上进行讨论。一个区别在于分配的存储大小。第一个表达式分配20个字符,但第二个表达式分配字符串的长度(13个字符) 第二个区别在本文中提到。这是关于如何分配这些变量的讨论。在第一种情况下,您使用从缓冲区中提取的14个字符部分初始化

以下两者之间的区别是什么:

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


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

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


第二个区别在本文中提到。这将在如何分配这些变量的方式上进行讨论。

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


第二个区别在本文中提到。这是关于如何分配这些变量的讨论。

在第一种情况下,您使用从缓冲区中提取的14个字符部分初始化堆栈分配数组,缓冲区由
“我是字符串”
字符串文字表示


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

在第一种情况下,您使用从缓冲区中提取的14个字符部分初始化堆栈分配的数组,缓冲区由
表示为“我是字符串”
字符串文字


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

第一种情况很清楚,它是数组初始化,而第二种情况意味着字符指针*arr指向将存储字符串“I am a String”的未命名静态数组

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

可能重复的可能重复的可能重复的可能重复的可能重复的可能重复的可能重复的可能重复的感谢,但我不明白字符串是如何初始化为第二个方法中的指针,因为指针被用来指向另一个变量感谢,但我不明白字符串是如何初始化为第二个方法中的指针的第二种方法,因为指针用于指向另一个变量
char *arr="I am a string"