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

char *和char[]
EN

Stack Overflow用户
提问于 2011-08-04 01:49:24
回答 5查看 1.1K关注 0票数 4

为什么这是对的?

代码语言:javascript
复制
#include<iostream>
using namespace std;
int main()
{
    char *s="raman";
    char *t="rawan";
    s=t;
    cout<<s;

return 0;
}

但这是错的吗?

代码语言:javascript
复制
#include<iostream>
using namespace std;
int main()
{
    char s[]="raman";
    char t[]="rawan";
    s=t;
    cout<<s;

return 0;
}
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-08-04 01:53:04

第一个示例将一个指针分配给另一个有效的指针。

第二个例子将一个数组赋值给另一个数组,这在C& C++中是不允许的。

优秀的C++常见问题解答条目和答案应该是一本很好的读物。

票数 7
EN

Stack Overflow用户

发布于 2011-08-04 01:52:20

在第一个示例中,s=t执行指针赋值。在第二个示例中,s=t尝试将一个指针值(由数组表达式t的隐式转换或“衰减”产生)赋给一个数组对象。C++不允许数组赋值。

C和C++在这方面非常相似;comp.lang.c FAQ的第6节很好地介绍了数组和指针之间的关系。

票数 15
EN

Stack Overflow用户

发布于 2011-08-04 02:01:13

除了其他人所说的:

与流行的看法相反,数组实际上不是指针。它们只是在使用它们时有很多相似之处,并且有几个隐式的指针转换,这就是为什么使用它们很容易,就像它们是指针一样。

数组是(C和) C++的一个独立特性。它的行为与指针不完全一样。

例如,可以在堆栈上分配数组对象,当您使用new (返回一个指针)和指针分配对象时,这是不可能的。

你展示的是另一个例子:你不能像使用指针一样使用数组。但是您可以使用指针来指向连续的内存片段(数组)。

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

https://stackoverflow.com/questions/6930859

复制
相关文章

相似问题

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