链表数组大小不同

时间:2012-07-24 03:06:20

标签: c++ arrays struct linked-list

继承我的代码:

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

为什么秩序4应该是11因为我传递数组p t

1 个答案:

答案 0 :(得分:3)

当传入期望指针的函数时,您的数组会被衰减为指针。 sizeof函数中的Order运算符返回指针的大小,该指针在您的体系结构中为4个字节。

  

(C99,6.3.2.1p3)“除非它是sizeof运算符的操作数   或者一元&amp;运算符,或者是用于初始化的字符串文字   数组,类型为“数组类型”的表达式将转换为   带有“指向类型的指针”类型的表达式,指向初始值   数组对象的元素,而不是左值。“