使用 2D 字符数组时将数组作为指针
Posted
技术标签:
【中文标题】使用 2D 字符数组时将数组作为指针【英文标题】:Array as Pointers when using a 2D Char Array 【发布时间】:2014-10-28 01:05:50 【问题描述】:我正在查看一个练习题,但我不明白 c++ 如何得出它给我的答案。我了解当数组初始化为“int”类型时指针如何与数组一起工作,但当它是“char”类型时我完全被抛弃了。 char 有什么不同让我得到我所看到的结果?
还有为什么 b 和 &b 是一样的?当我询问 b 时,我假设它与询问数组的地址相同,它是 b 的第一个元素,对吗?另外,当添加到 b 时,我要求该元素的地址是否正确?
#include <iostream>
using namespace std;
int main()
char b[5][7];
cout<<sizeof(b)<<endl; //output 35
cout<<sizeof(b+1)<<endl; //output 8
cout<<sizeof(*(b+1))<<endl; //output 7
cout<<"the address of b is"<<b<<endl;
cout<<"the address of b+2 is"<<b+2<<endl;
cout<<"the address of &b is"<<&b<<endl;
cout<<"the address of &b+2 is"<<&b+2<<endl;
return 0;
【问题讨论】:
【参考方案1】:char *
有一个特殊的重载,但对于任何其他指针类型都没有,这是用于输出 C 风格的字符串。事实上你用它来输出文本"the address of b is"
!
【讨论】:
以上是关于使用 2D 字符数组时将数组作为指针的主要内容,如果未能解决你的问题,请参考以下文章
C 语言二级指针案例 ( 字符串切割 | 返回 二维数组 作为结果 )
C 语言二级指针作为输入 ( 指针数组 | 指针数组排序 | 字符串排序 | strcmp 函数 )
将数组作为 void 指针发送时,在 c 中使用 puts 输出 2d char 数组时出错