C++ 这段代码的输出是什么?第13行到底发生了什么?

C++ 这段代码的输出是什么?第13行到底发生了什么?,c++,c++11,C++,C++11,} 那么StorageArr[n]=arr[k]是如何工作的呢。我的意思是,如果我们分配n=5,那么arr[k]的所有值都将被分配到相同的位置StorageArr[5],或者arr[k]的值将存储在StorageArr中,就像先存储在第0个位置,然后存储在第1个位置,然后依次存储到第4个位置……如果n==5,那么 将始终将arr[k]分配给StorageArr[5]。这就是代码所说的,这就是它在工作程序中所做的。我不确定您是从哪里想到它可能会分配给StorageArr[0]然后再分配给Stora

}

那么StorageArr[n]=arr[k]是如何工作的呢。我的意思是,如果我们分配n=5,那么arr[k]的所有值都将被分配到相同的位置StorageArr[5],或者arr[k]的值将存储在StorageArr中,就像先存储在第0个位置,然后存储在第1个位置,然后依次存储到第4个位置……

如果n==5,那么

将始终将arr[k]分配给StorageArr[5]。这就是代码所说的,这就是它在工作程序中所做的。我不确定您是从哪里想到它可能会分配给StorageArr[0]然后再分配给StorageArr[1]等等

代码中有很多错误,仅举一个,看看上面的代码,k的值是多少?在任何时候你都不会给它一个值。但是你到处都在使用它的价值。这意味着您的整个程序都有未定义的行为,试图确定它将做什么是毫无意义的


修复错误,程序将以更可预测的方式运行。

StAtAREAR正在被从边界访问。代码似乎满是未定义的行为。而不是有效的C++。SturaGrr[n]=ARR[K]是如何工作的,它不起作用。如果你写的东西超过了数组,这就是未定义的行为。当代码的行为未定义时,就没有必要解释奇怪的行为。最好避免这种奇怪的行为,通过编写代码来定义良好的行为。此外,声明中的Car StAtAgReRe[n]和Car ARR[K]在C++中都是无效的,因为N和K是变量。不幸的是,由于与C99兼容,您使用的编译器允许将此类声明作为非标准扩展。谢谢@john
#include <iostream>
#include <string.h>
using namespace std;
int main() {

    int num , n , n1 , k , x = 0;
    cout << "Enter the no. of vertices: " ;
    cin >> n;
    char StorageArr[n];
    char arr[k];
     for(k = 0; k< n ; k++){
       cout<< "arr[" << k << "] : ";
       cin >> arr[k] ;
       StorageArr[n] = arr[k];
    }

    int len = sizeof(StorageArr)/ sizeof(StorageArr[0]);

    cout << "The length of the array is : " << len << endl;
     for(int i= 0 ; i< len ; i++){
       for(int j = 0; j< len ; j++ ){
            cout<<"\n\t" <<"Element at " << StorageArr[i] <<        StorageArr[j] << ": "  ;
        cin >> num;
        if(i==j && num == 0){
            x++;
        }
    }
}

if(x == len){
    cout<<"This  is a complete graph...";
}else{
    cout<< "This is not a complete graph..." ;
}

return 0;
StorageArr[n] = arr[k];