字符串声明中的数组与指针:char a[] 与 char *p
在 C 编程中,声明和声明之间存在区别处理字符串时的字符数组和字符指针。您提到的语法“char a[] = string;”和“char *p = 字符串;”演示了这种差异。
数组版本:char a[] = string
此语法声明一个字符数组“a”,其大小会自动确定以容纳字符串文字“string”。该数组使用字符串的字符(包括空终止符)进行初始化。数组的大小在编译时已知,允许您使用“sizeof”运算符来确定其长度。您可以稍后修改数组中的字符。
指针版本:char *p = string
此语法声明一个指向字符串的指针 'p'字面意思是“字符串”。这是比数组版本更快的方法,但禁止修改“p”指向的字符,因为它们驻留在内存的只读部分中。修改此类字符串文字会导致未定义的行为。
C 中的弃用和最佳实践
在 C 中,不推荐使用不带 'const' 关键字的字符串文字。指针版本的首选声明是:
const char *p = "string";
此外,避免使用 'sizeof' 来确定指针指向的字符串的大小。相反,请使用“strlen()”函数。
在数组和指针之间进行选择
使用数组或指针的选择取决于您的场景:
C 注释
此区别特定于 C并且不适用于 C 。在 C 中,可以在没有“const”的情况下使用字符串文字,但修改它们仍然是未定义的行为。在 C 中,这种用法是非法的。
以上是C 中的字符数组与字符指针:何时应该对字符串使用'char a[]”与'char *p”?的详细内容。更多信息请关注PHP中文网其他相关文章!