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