C++中字符数组的指针与其他数组指针有什么区别?

C++中字符数组的指针与其他数组指针的区别?

在C++语言中,数组名代表的是指向数组首元素的指针(地址),如果打印数组名,
会输出数组首元素的地址,例如:

#include <iostream>
using namespace std;
int main()
{
    int a[3] = {0};
    cout << a;
    system("pause");
}

则输出为:

0x72fde0

此时a代表的是指向数组元素a[0]的指针
但是如果定义的是一个字符数组,虽然其数组名与普通数组的含义是一样的,
但如果此时打印数组名,则会打印字符数组的内容,例如,上例可改为:

#include <iostream>
using namespace std;
int main()
{
    char a[4] = "boy";
    cout << a;
    system("pause");
}

输出为

boy

如果定义了另一个指针指向字符数组,打印该指针同样会打印出字符串的内容,例如:

#include <iostream>
using namespace std;
int main()
{
    char a[4] = "boy";
    char *p = a;
    cout << p;
    system("pause");
}

输出仍然为:`

boy

但是,如果是二维数组以上的字符数组,则不会打印内容;

#include <iostream>
using namespace std;
int main()
{
    char a[4][5] = {"I","love","you"};
    char (*p)[5] = a;
    cout << p;
    system("pause");
}

输出为:

0x72fe00
发布了10 篇原创文章 · 获赞 0 · 访问量 103

猜你喜欢

转载自blog.csdn.net/xcpython/article/details/103776415
今日推荐