Fre*_*Air 3 c++ arrays parameter-passing
似乎可以通过引用第一个元素来传递数组:
void passMe(int& firstElement)
{
int* p=&firstElement;
cout << p[0] << p[1];
}
Run Code Online (Sandbox Code Playgroud)
主程序:
int hat[]={ 5,2,8 };
passMe(hat[0]);
Run Code Online (Sandbox Code Playgroud)
通常,而不是上面的函数定义,我会做void passMe(int* myArray)或void passMe(int[] myArray).但上述方法会导致任何问题吗?知道答案将使我能够更好地理解这里发生的事情,如果没有别的话.
就语言律师和编译器而言,这很好.主要问题将是人类程序员(包括你自己的未来版本).当您的标准C++程序员在程序中看到这个时:
void passMe(int& firstElement); // function declaration (in a .h file)
int hat[]={ 5,2,8 };
passMe(hat[0]);
Run Code Online (Sandbox Code Playgroud)
他希望passMe()可以读取和/或修改hat [0].他绝对不会指望passMe()可能会读取和/或修改hat [1].当他最终弄明白你在做什么时,他会因为不必要的"聪明"代码误导他而对你感到非常沮丧.:)
此外,如果另一个程序员(谁不知道你的技巧)试图从他自己的代码调用你的函数,只看到标题中的函数声明后,他可能会尝试做这样的事情:
int cane = 5;
passMe(cane);
Run Code Online (Sandbox Code Playgroud)
...当passMe()尝试引用数组中的第二个项目时,这将直接导致运行时神秘的未定义行为,cane因为cane实际上不在数组中,所以它实际上不存在.
| 归档时间: |
|
| 查看次数: |
65 次 |
| 最近记录: |