que*_*ons 4 c++ arrays pointers
我是Coding的新手,并且有一些问题需要理解指针如何与数组结合使用(我自己理解这些数据).
我知道可以创建一个指针数组,如:
#include <iostream>
using namespace std;
int main() {
int i;
int *pArr[10];
pArr[0]=&i;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在教程中,我发现了以下代码:
#include <iostream>
using namespace std;
int main() {
char *names[4] = {
"name A",
"name B",
"name C",
"name D"
};
for (int i = 0; i < 4; i++) {
cout << names[i] << endl;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
为什么我可以分配多个字符,或者说一个字符串,比如"name A"到一个指向char的指针.
IA不应该:
只能将char的Address分配给我创建的4个指针中的每一个.
而且B:
只能将指针分配给每个字母(一个字母).
我希望有人可以在某种程度上帮助澄清我的困惑.
这是编译器提供的一种快捷方式,使程序员更容易在代码中包含字符串.
当您编写字符串文字时 "name A",编译器会为您准备一个七字符数组:
const char hidden0[] = {110, 97, 109, 101, 32, 65, 0}; // "name A"
Run Code Online (Sandbox Code Playgroud)
前六个数字对应于字符串中符号的字符代码.最后一个字符为零 - 所谓的空终止符.
编译器对所有四个字符串文字执行相同的操作,因此您的数组初始化程序如下所示:
const char *names[4] = {
&hidden0[0],
&hidden1[0],
&hidden2[0],
&hidden3[0]
};
Run Code Online (Sandbox Code Playgroud)
hiddenK是为相应的字符串文字创建的数组.它没有名称,但编译器知道它的地址,并将其放在name[]数组中.
| 归档时间: |
|
| 查看次数: |
3065 次 |
| 最近记录: |