gpt4 book ai didi

c++ - 不同类型数组的不同行为

转载 作者:太空宇宙 更新时间:2023-11-04 14:40:02 25 4
gpt4 key购买 nike

我已经测试了两种不同的相似代码变体,假设我有 char 数组

char x[]="snow comes in winter ";

然后是下面的代码

#include <iostream>
#include <string.h>
using namespace std;
int main(){

char x[]="snow comes in winter ";
int k=0;
int n=3;
cout<<x+n-k+1<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}

打印“冬天来了”跟随

#include <iostream>
#include <string.h>
using namespace std;
int main(){

//char x[]="snow comes in winter ";
int a[]={12,3,2,4,5,6,7};
int k=0;
int n=3;
cout<<a+n-k+1<<endl;



return 0;
}

打印0xbffd293c如果我们稍微改变一下

#include <iostream>
#include <string.h>
using namespace std;
int main(){

//char x[]="snow comes in winter ";
int a[]={12,3,2,4,5,6,7};
int k=0;
int n=3;
cout<<*(a+n-k+1)<<endl;



return 0;
}

打印数字 5。所以我的问题是为什么我们可以如此轻松地访问 char 数组?主要原因是什么?我很好奇,请问有人能解释一下吗?

最佳答案

why we can access in case of char array so easily?

因为有一种约定,C 字符串由 char* 表示,所以人们假设 char* 实际上是字符串。 iostream 紧随其后,并为 char* 重载输出以打印字符串,而对于 int* (在您的第二个示例中),它们打印地址的表示。

顺便说一句,输入有类似的过载,这是最不幸的,因为您无法控制它来防止缓冲区溢出。 IE。不要这样做:

char x[10];
std::cin >> x;

关于c++ - 不同类型数组的不同行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7688150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com