首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >char*和char[]之间的区别

char*和char[]之间的区别
EN

Stack Overflow用户
提问于 2011-09-27 11:54:03
回答 8查看 31.2K关注 0票数 43

我知道这是一个非常基本的问题。我搞不懂为什么和怎么会有以下的不同。

代码语言:javascript
复制
char str[] = "Test";
char *str = "Test";
EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-09-27 11:56:03

代码语言:javascript
复制
char str[] = "Test";

是一个chars数组,使用来自“测试”的内容进行初始化,而

代码语言:javascript
复制
char *str = "Test";

是一个指向文字(常量)字符串"Test“的指针。

它们之间的主要区别是第一个是数组,另一个是指针。数组拥有它的内容,这些内容恰好是"Test"的副本,而指针只是指向字符串的内容(在本例中是不可变的)。

票数 35
EN

Stack Overflow用户

发布于 2014-09-10 09:27:06

不同之处在于使用的堆栈内存。

例如,当为微控制器编程时,为堆栈分配的内存非常少,这会产生很大的差异。

代码语言:javascript
复制
char a[] = "string"; // the compiler puts {'s','t','r','i','n','g', 0} onto STACK 

char *a = "string"; // the compiler puts just the pointer onto STACK 
                    // and {'s','t','r','i','n','g',0} in static memory area.
票数 13
EN

Stack Overflow用户

发布于 2011-09-27 12:03:22

指针可以重新指向其他内容:

代码语言:javascript
复制
char foo[] = "foo";
char bar[] = "bar";

char *str = foo;  // str points to 'f'
str = bar;        // Now str points to 'b'
++str;            // Now str points to 'a'

递增指针的最后一个示例显示,您可以轻松地遍历字符串的内容,一次迭代一个元素。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7564033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档