C++ 为什么可以将数组作为指针传递?

C++ 为什么可以将数组作为指针传递?,c++,arrays,C++,Arrays,我正在阅读,它建议将数组传递给函数的第一种方法是将其作为指针传递: void myFunction(int *myArray) { . . . } 这难道不起作用吗,因为在myFunction中无法确定myArray的长度?通常的惯例是为数组长度传递一个单独的参数 void myFunction(int* myArray, int length) { for (int index = 0; index < length; ++index) { // .

我正在阅读,它建议将数组传递给函数的第一种方法是将其作为指针传递:

void myFunction(int *myArray) {
   .
   .
   .
}

这难道不起作用吗,因为在
myFunction
中无法确定
myArray
的长度?

通常的惯例是为数组长度传递一个单独的参数

void myFunction(int* myArray, int length) {
   for (int index = 0; index < length; ++index) {
      // ... do something with each array item ...
   }
}

void caller() {
    int array[10];
    // ... put some useful values in the array ...
    myFunction(array, sizeof(array) / sizeof(array[0]));
}
void myFunction(int*myArray,int-length){
对于(int-index=0;index
这取决于“工作”的含义。
myFunction
需要数组的长度才能工作。例如,操作<代码> MySuffy/Cuff>执行的是将所有的元素添加到 MyReals中。我可以保证C++编译器不会将任何代码的一个数组< int >代码> s传递给这个函数。这肯定会起作用。最后,您实际上会传递一个指向数组第一个元素的指针。之后如何处理指针取决于您自己。@DDC它几乎没有任何用处。如果有一个sentinel值指示范围的结束,则可以使用该值。这就是以null结尾的字符串作为
char*
传递时发生的情况。在C++中,传递那些知道它们的大小的对象(例如:代码> STD::vector < /代码>)或定义范围的迭代器。