0

次のコードを理解するのに苦労していますbuffer[i] = arr ? arr[i] : 0;。これは、何かarrが含まれている場合は に等しく、含まれbuffer[i]ていない場合は に等しいということ0ですか?

#include <iostream>
using namespace std;
int main ()
{
    int arr[5]={11,22,33,44,55};
    int * buffer;
    buffer = new int [5];

    for(int i=0;i<5;i++){
        buffer[i] = arr ? arr[i] : 0;//true/falls
        cout<<buffer[i]<<",";
    }
    cout<<endl;

    int arr2[5]={};
    int * buffer2;
    buffer2 = new int [5];

    for(int i=0;i<5;i++){
        buffer2[i] = arr2 ? arr2[i] : 0;//true/falls
        cout<<buffer2[i]<<",";
    }
    cout<<endl;
}
4

1 に答える 1

9

arr動的に割り当てられたときにコードが移植された可能性があります。今はスタック上にあるため、arr決してスタックになることはなくNULL、チェックは役に立たない

于 2012-11-12T22:52:23.073 に答える