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

为什么订单 4 它应该是 11 因为我传递了数组 pt

4

1 回答 1

3

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

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

于 2012-07-24T03:09:32.363 回答