gpt4 book ai didi

c++ - 为什么在 sizeof() 函数中使用和不使用 * 运算符时,指向结构变量的指针大小会有所不同?

转载 作者:搜寻专家 更新时间:2023-10-31 01:32:11 24 4
gpt4 key购买 nike

using namespace std;
#include<iostream>
int main()
{
struct node
{
int data;
struct node *next;
};

struct node *node1;

node1 = (struct node*)malloc(sizeof(node));

node1->data = 5;
node1->next = NULL;

cout<<"node data value "<<node1->data<<endl;

int *vara;

cout<<"size of struct node pointer with * "<<sizeof(*node1)<<endl; // size is 8
cout<<"size of struct node pointer without * "<<sizeof(node1)<<endl; // size is 4
cout<<"size of integer pointer variable with * "<<sizeof(*vara)<<endl; // size is 4
cout<<"size of integer pointer variable with * "<<sizeof(*vara)<<endl; // size is 4 in this case as well

}

为什么当使用 * 运算符和不使用 * 运算符时,指向结构变量的指针的大小会有所不同?

在 CodeBlocks,C++ 语言中执行上述代码。

最佳答案

简答:因为node1是一个指针而*node1是一个节点,它们有不同尺寸。


更长的答案:

让我们检查一下您传递给 sizeof 运算符的每个表达式的类型:

  1. *node1 的类型是 node,它由一个 int 和一个 node* 组成,两者都是在您的平台上大小为 4 个字节,因此总大小为 8 个字节。
  2. node1 的类型为 node*,它是一个指针。在您的平台上,指针的长度为 4 个字节。
  3. *vara 的类型是 int,它是一个整数。在您的平台上,整数的长度为 4 个字节。
  4. vara 的类型是 int*,它是一个指针。在您的平台上,指针的长度为 4 个字节。

关于c++ - 为什么在 sizeof() 函数中使用和不使用 * 运算符时,指向结构变量的指针大小会有所不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43805076/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com