使用 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 数组时出错

C 语言二级指针作为输入 ( 指针数组 | 将 二级指针 作为函数输入 | 抽象函数业务逻辑 )

字符 字符串 字符数组 字符串指针 指针数组(C语言)