1

ここに私のコードがあります:

using namespace std;
class Network
{
    // private function to constructe the nodes with a left and right childed
    private:

        struct node
        {


           node* left;
           node* mid;
           node* right;
           char data;
        };
        node* root;
    // public function for the the program
    public:
        char *Nodes ;
        Network()
        {
           root = NULL;
        }

        char Link(char,char);



        node* Network::Order(char* temp){


            cout << "Order:" << sizeof(temp);

            node* store; 
            store = new node[sizeof(temp)];



};
};


char Network::Link(char temp, char temp1){

};




// Smaller elements go left
// larger elements go right



/*
 * 
 */
int main() {

    Network object;
    char p[11];
    p[0] = 'a';
    p[1] = 'b';

    cout << "p:" << sizeof(p);
    object.Order(p);
    return 0;
}

出力:p:11注文:4

配列ptを渡すので、順序4は11になるはずです。

4

1 に答える 1

3

ポインターを期待する関数に渡されると、配列はポインターに減衰されます。関数のsizeof演算子はOrder、アーキテクチャで4バイトのポインタのサイズを返します。

(C99、6.3.2.1p3)「sizeof演算子またはunary&演算子のオペランドである場合、または配列を初期化するために使用される文字列リテラルである場合を除き、「タイプの配列」タイプの式は、配列オブジェクトの初期要素を指し、左辺値ではない「タイプへのポインタ」タイプの式。

于 2012-07-24T03:09:32.363 に答える