C++ 为什么输入两个字符[]时,第一个字符将与最后一个字符相同? 使用名称空间std; int main(){ charb[50]; cin>>b; char*a[50]; a[0]=b; cin>>b; cout

C++ 为什么输入两个字符[]时,第一个字符将与最后一个字符相同? 使用名称空间std; int main(){ charb[50]; cin>>b; char*a[50]; a[0]=b; cin>>b; cout,c++,char,C++,Char,这是相同的,因为当您取消引用a[0]和a[1]时,您正在访问相同的内存(名为b的数组) :在C++中不要使用普通的老字符数组来使用字符串。使用 STD::String < /C>或类似的东西。< /P> < P>,因为你在引用< > [0 ] < /COD>和 A[ 1 ] < /C> > /< >时,访问相同的内存(数组名为“代码> B)。 BTW:不要在C++中使用普通的老字符数组来使用字符串。使用 STD::String 或类似的东西。 代码> char * [50 ] < /Cord

这是相同的,因为当您取消引用
a[0]
a[1]
时,您正在访问相同的内存(名为
b
的数组)


:在C++中不要使用普通的老字符数组来使用字符串。使用<代码> STD::String < /C>或类似的东西。< /P> < P>,因为你在引用< <代码> > [0 ] < /COD>和<代码> A[ 1 ] < /C> > /< >时,访问相同的内存(数组名为“代码> B<代码”>)。

BTW:不要在C++中使用普通的老字符数组来使用字符串。使用<代码> STD::String 或类似的东西。

<代码>代码> char * [50 ] < /Cord>是一个指向字符串的指针数组。

charb[50]
是一个字符串(字符数组)

那么这个

using namespace std;
int main() {
    char b[50];
    cin >> b;
    char* a[50];
    a[0] = b;
    cin >> b; 
    cout << endl;
    a[1] = b;
    cout << a[0] << "\t" << a[1] << endl;
    cout << strlen(a[0])<<"\t"<<strlen(a[1]) << endl;
}

char b[50] = "x";
char* a[50];
a[0] = b;
a[1] = b;

在这两种情况下,两个指针都指向同一个字符串(
b
)。如果更改该字符串中的内容,则两个指针都指向它们以前指向的相同位置:字符串
b
,但现在内容已更改。

char*a[50]
是指向字符串的指针数组

charb[50]
是一个字符串(字符数组)

那么这个

using namespace std;
int main() {
    char b[50];
    cin >> b;
    char* a[50];
    a[0] = b;
    cin >> b; 
    cout << endl;
    a[1] = b;
    cout << a[0] << "\t" << a[1] << endl;
    cout << strlen(a[0])<<"\t"<<strlen(a[1]) << endl;
}

char b[50] = "x";
char* a[50];
a[0] = b;
a[1] = b;
在这两种情况下,两个指针都指向同一个字符串(
b
)。如果更改该字符串中的内容,则两个指针都指向它们以前指向的相同位置:字符串
b
,但现在内容已更改