代码解释 C++ [结构 / 两个 diamentinal 数组 / 指针]
code explanation c++ [struct / two diamentinal array / pointers]
我是c++及其开发的新手.我有两种方法void accumulation(void)和void chartest( char * nam)积累在我的main.cpp文件中调用。
void accumulation(void)
{
char * test[] ={"Rehan ","Kalpana"};
chartest(&test[0][1]);
}
void chartest( char * nam)
{
printf("char name -> %s n",nam);
}
我更改了图表中的值,如下所示,然后我得到了如下输出
chartist(&test[0][1] - char name -> ehan
chartest(&test[1][1])-char name -> alpana
chartest(&test[1][0]) -char name -> Kalpana
chartest(&test[0][0])- char name -> Rehan
谁能解释为什么会这样。 这对我有很大帮助。 谢谢
你基本上只是访问字符串中的某个字符并将其转换为字符数组(检索它的地址)。
test[0][0] = "Rehan" = 'R' // type: char
^
test[0][1] = "Rehan" = 'e' // type: char
^
&test[0][0] = "Rehan" // type: char*
&test[0][1] = "ehan" // type: char*
您只是偏移字符串的开头。
希望我说得有道理。
当你打电话时
chartest(&test[0][1]);
您正在传递字符的地址 test[0][1]
,即
Memory : 900 901 902 903 904 905 906 907
R E H A N
^ <-This address is being sent to the chartest() function.
现在,chartest()
打印通过的结果char *
。
由于printf()
与%s
打印字符串,直到遇到