use*_*972 5 c c++ arrays pointers
我正在查看一些我没写过的代码,希望能帮助理解它的一个元素.代码存储字符数组,创建指向这些数组的指针(指定数组地址的指针).它看起来像然后创建一个数组来存储这些字符指针地址,我只想澄清我正在看的东西.我也很困惑在创建数组时使用double(**).
我已经在下面列出了我正在查看的简化示例.
char eLangAr[20] = "English";
char fLangAr[20] = "French";
char gLangAr[20] = "German";
char* eLangPtr = eLangAr;
char* fLangPtr = fLangAr;
char* gLangPtr = gLangAr;
char **langStrings [3]=
{
&eLangPtr,
&fLangPtr,
&gLangPtr
};
Run Code Online (Sandbox Code Playgroud)
使用数组时,它们将它作为参数传递给函数.
menu (*langStrings[0]);
Run Code Online (Sandbox Code Playgroud)
所以我的想法是将字符数组值"English"传递给函数,但是我很难看到它.它们将菜单函数传递给存储在位置0的langStrings函数中的值的副本,这将是eLandPtr的地址?如果有人能用英语解释这个过程,那么我可以把它放在一边,这将是很棒的.这可能只是因为它已经过了漫长的一天,但它根本就不在我脑海里.
你是正确的,langStrings包含指向字符数组指针的指针。所以每个langString[i]指向一个指针。该指针指向一个数组。该数组包含一种语言的名称。
正如其他人指出的那样,它看起来有点笨拙。我会详细说明:
char eLangAr[20] = "English";是一个包含 20 个字符的数组,名称“ English”被复制到其中。我不希望那个变量eLangAr会包含除此语言名称之外的其他内容,因此无需使用数组;一个常数就足够了。
char **langStrings [3]= ... 在这里,只有一个间接(一个 *)就足够了,因为似乎没有必要让指针指向其他任何东西(随机混洗语言?)。
总之,只要具备以下条件就足够了:
const char *langStrings [3]=
{
"English",
"French",
"German"
};
Run Code Online (Sandbox Code Playgroud)
(请注意,const因为字符串现在是只读常量/文字。)
char *langStrings [3]=
{
aLangArr,
fLangAr,
gLangAr
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1215 次 |
| 最近记录: |