c语言中 怎么区分指针变量什么时候指向一个结构体数组,什么时候指向结构体数组的一个元素

如题所述

定义结构体会吧,看看下面这两个例子:

    struct str{
      int n;
      int s;
    };

    void main()
    {struct str a[2]={1,2,3,4};//声明一个结构数组并对数组a[0]中的成员n和s
                            分别赋值为1和2,对a[1]中的成员设置为3和4。
                            注:有些编译器可能不需要最前面的struct来声明
                             结构对象。
    struct str *p=a;   //声明一个结构指针,并把结构数组的地址赋给该指针
    printf("%d",p->n);  //访问结构数组对象a[0]中的变量n的值,也就是1
    printf("%d",(p+1)>n); //访问结构数组对象a[1]中的变量n的值,也就是3。因为指针p+1就指向了结构数结a的下一个位置,也就是a[1]处。

    }

    main()
    {
    typedef struct srt{
    int n;
    int s;
    }str_xx;//自定义一个结构体
    str_xx test_str;//按照自定义的一个结构体定义一个结构体
    str_xx *test_prt;//按照自定义的一个结构体定义一个指针0
    test_prt = test_str;//把这个指针指向这个结构体

    test_prt->n = 0;//给结构体变量赋值
    test_prt->s = 0;//给结构体变量赋值
    printf("test_prt->n = %d test_ptr->s = %d\n",test_prt->n,test_prt->s);
    }

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-12-01
指向结构体数组实际上指向的就是数组的第一个元素。追问

引用的时候怎么区分呢?

追答

你为什么非要区分呢,你自己知道你需要的是这个数组里面的第几个元素吧。

本回答被网友采纳
相似回答