首页 > 后端开发 > C++ > 正文

C 中'char*”和'char[]”有什么区别?

Barbara Streisand
发布: 2024-10-27 04:47:02
原创
628 人浏览过

 What's the Difference between `char*` and `char[]` in C?

理解 char* 和 char[]

在 C 编程中处理字符数组和指针时,掌握char str[] = "Test"; 之间的根本区别和 char *str = "Test";.

char str[] = "Test";

在此声明中,str 表示字符(chars)数组具有固定大小,用字符串“Test”的内容初始化。该数组拥有自己的内存,并且与原始字符串文字不同。对 str 的任何修改都会改变数据的本地副本,而不是“Test”字符串本身。

char *str = "Test";

这里,str是一个指针,特别是指向字符串文字“Test”的第一个字符的指针。指针存储的是该字符的内存地址。然而,重要的是要记住 str 并不拥有存储字符串的内存;它拥有存储字符串的内存。相反,它指向只读(const)字符串文字。因此,任何更改 str 指向的字符串的尝试都将导致未定义的行为。

主要区别:

  1. 所有权: char[] 数组拥有自己的数据,而 char* 指针引用另一个实体拥有的数据。
  2. 可变性: char[] 数组可以修改(例如,分配新值),但 char * 指针指向不可变文字,更改它们指向的数据是未定义的。
  3. 内存分配: char[] 数组在堆栈上分配本地内存,而 char* 指针可以引用程序中任何位置的内存,包括文字和其他分配的内存。
  4. 大小确定: char[] 数组的大小在编译时是固定的,而 char[] 数组所指向的数据的大小char* 指针由数据本身或外部内存的分配决定。

以上是C 中'char*”和'char[]”有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!