Advertisement

回顾《C++ Primer》第十章:当数组作为函数参数时

阅读量:

当我们考虑将数组作为实参传递时, 人们通常会意识到, 由于数组无法进行拷贝操作, 因此在传递参数时无法真正获得真实的参数集合。此外, 当使用数组名称的时候, 我们可能会遇到其他相关问题或限制情况

处理

引用数组参数则是可以实现真正的数组传递的。

一、非引用数组形参,[]和长度值的作用

在将数组用作函数参数时,在这种情况下,在编程语言中使用方括号([])来表示指针数据类型是一个重要特征之一。其中一种情况是...另一种情况则...

复制代码
 void func(int array);  //参数类型为int

    
 void func(int array[]);  //参数类型为int*

另外,长度值是没有任何意义的,编译器会直接忽视它。因此,下面三种方式是相同的:

复制代码
 void func(int *);

    
 void func(int []);
    
 void func(int [10]);

长度值毫无价值且存在歧义性,在函数中应用它们普遍认为存在风险或潜在问题。

总结:当编译器在进行关联性检查时(即处理数组形参与实参的对应关系),它仅会验证实参是否为指向的对象(即是否存在指向),以及该对象所指针类型的匹配情况(即确定指针类型的一致性);同时还会确认数组元素的数据类型是否一致(即数据类型的匹配)。这种机制不会

全部评论 (0)

还没有任何评论哟~