C++方法与Java的比较(从Java到C ++的语法)

method on c++ compared to java (syntax from java to c++)

本文关键字:Java 语法 方法 比较 C++      更新时间:2023-10-16

我开始在C ++上编码,我有很好的Java背景,我对C++的语法有一些问题。我坚持一件事,我创建了一个方法"SortCloums",但我错过了一些东西。在 for 循环中,它给了我按摩:

expression must have pointer-to-object type

这是我的简短代码,是的,我还在学习指针。 需要你们的一些指导。

#include <iostream>
using namespace std;
const int size = 4;
void SortCloums(int arr[size][size], int sizeOfArray);
int main(){
int arr[size][size] = { { 0, 4, 6, 0 },
                         {5, 6 , 8, 12},
                         {50, 8, 12, 24},
                         {900, 10, 30, 50} };
SortCloums(arr, size);
    return 0;
 }
   void SortCloums(int arr ,int sizeOfArray) {
    // now we check if the array is column sorted or not.
    bool flag = true;
for (int i = 0; i < sizeOfArray && flag != false; i++){
    for (int j = 0; j < sizeOfArray && flag != false; j++){
        if (arr[j][i] > arr[j+1][i]){
            flag = false;
            std::cout << "The array of column unsorted" << endl;
            std::cin.get();
        }
    }
}
if (flag == true){
    std::cout << "The array is column sorted" << endl;
    std::cin.get();
}
    }

我想错误消息指向以下行:

    if (arr[j][i] > arr[j+1][i]){

此代码将arr视为二维数组。但是,此处以不正确的方式声明arr

void SortCloums(int arr ,int sizeOfArray) {

由于声明先于用法,因此编译器认为声明是正确的,而用法不正确。因此,它会输出一条不太清楚的错误消息。

要解决此问题,请正确声明arr

void SortCloums(int arr[size][size], int sizeOfArray) {

这里arr在概念上是一个二维数组,但由于各种技术原因,它正式是一个指向数组的指针。您的错误消息提到"指向对象的指针"类型;"指向数组的指针"是这种情况的特例,因此可以修复错误。