M.G_2002
2016-05-26 17:41
采纳率: 53.8%
浏览 1.4k

关于c语言结构体指针的问题

结构体指针只包含了结构体的首地址还是包含了所有成员的地址?还有结构体的首地址是什么,比如第一个成员是一个数组,那么首地址是不是就是这个数组的首地址?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • writeeee 2016-05-27 01:32
    已采纳

    结构体指针和数组首地址相同,代码验证

     #include "stdafx.h"
    #include <iostream>
    
    using namespace std;
    
    struct A{
        int a[100];
    };
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        struct A aa;
        struct A *pA=&aa;
    
        cout<<hex<<pA<<endl;
        cout<<hex<<(pA->a)<<endl;
    
    
        return 0;
    }
    
    点赞 评论
  • lm_whales 2016-05-26 17:47

    结构体,不是数组,没有首地址一说
    结构体 对象的地址,就是分配给这个对象的地址
    和int 地址一样
    不过结构体有内部成员,
    C 或者
    C++POD类型

    结构体对象的第一个成员的地址(如果有地址)
    和结构体对象地址相同。

    点赞 评论
  • Robot-S 2016-05-26 17:52

    指针也可以指向一个结构体变量。定义的一般形式为:

    struct 结构体名 *变量名;
    前面已经定义了一个结构体 stu:

    struct stu{ char *name; int num; char sex; float score;};

    下面定义一个指向 stu 的指针变量 pstu:
    struct stu *pstu;
    当然在定义结构体的同......
    答案就在这里:C语言结构体和指针
    ----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?

    点赞 评论
  • qq_35128147 2016-05-26 20:04

    首先,指针是一个存放地址的变量,就好比一排房子,你要找的东西在这排房子的某一间内,但具体的房间编号在1号房内,那么要取到目标物就要先到1号房去把编号找到,然后根据编号去找对应的房间;
    指针就是这个存放编号的房间,并且它只能放一个编号,不同类型的指针可以存放不同类型的指针;
    要区分结构体类型 和 结构体变量,前者是定义一个数据类型(并不分配空间),后者是根据这个类型在内存中分配了具体的空间,
    结构体变量是根据它的成员的类型依次分配空间的,各成员变量的内存分配是相邻的,所以第一个成员的地址就是这个结构体变量的地址.

    点赞 评论
  • devmiao 2016-05-27 00:14

    结构体指针既是结构体首成员的地址,也是结构体的首地址。你说的是对的。
    好比数组指针既是数组的首地址,也是数组第一个元素的首地址。

    点赞 评论
  • mazegong 2016-05-27 06:48

    首先,指针是一个存放地址的变量,就好比一排房子,你要找的东西在这排房子的某一间内,但具体的房间编号在1号房内,那么要取到目标物就要先到1号房去把编号找到,然后根据编号去找对应的房间;
    指针就是这个存放编号的房间,并且它只能放一个编号,不同类型的指针可以存放不同类型的指针;
    要区分结构体类型 和 结构体变量,前者是定义一个数据类型(并不分配空间),后者是根据这个类型在内存中分配了具体的空间,
    结构体变量是根据它的成员的类型依次分配空间的,各成员变量的内存分配是相邻的,所以第一个成员的地址就是这个结构体变量的地址.

    点赞 评论

相关推荐 更多相似问题