首页 > 代码库 > 结构体

结构体

#include <stdio.h>

#include <stdlib.h>


//创建结构体:重命名为node_t,指针重命名为p2node_t

typedef struct linknode{

   int data;

   struct linknode* next;

}node_t,*p2node_t;

struct{

   char a[10];

   //声明结构体时不能对成员变量初始化

    //int i = 0;(/*wrong*/)

   int i;

}a1,a2;

//无结构标记的结构体重复声明不被认为是同一个类型

struct{

   char a[10];

   int i;

}p1,p2;

int main(int argc,const char * argv[]) {

   int i = 0;

    a1.a[0] =‘a‘;

    a2 = a1;

    printf("%s\n",a2.a);

    

   //无结构标记的结构体重复声明不被认为是同一个类型所以:

    //p1 = a1;(/*wrong*/)

    

   char aa[] = "you are bad";

    //    aa = "ou";/*wrong*/

   char ab[12] ="you are bad";

    //    ab = "ou";/*wrong*/

    

   //上面的数组aa/ab数组不能像下面的指针“ac”这样应用,因为数组在创建时指针(aa/ab)的地址

   //已经被绑定到被分配的内存地址,所以不可以再变动

   char* ac =NULL;

    ac = "you are bad";

    //    ac[0] = ‘o‘;

   printf("%s\n",ac);

   //结构体数组可以作为小型数据库来使用

   //数组array可以作为记录100台电脑的数据库

   node_t array[100];

   for (i = 0; i<100;i++) {

        array[i].data = i;

    }

    i =0;

   while (i!=100) {

       printf("%d  ",array[i++].data);

    }

   /*

     每个结构体表示一种新的范围,与其它结构体中的成员不会发生冲突,即使两个结构体中的成员姓名相同,但他们始终不会干扰到对方。

     类似与函数中的局部变量

     struct{char a[100]}a1,a2;

     a2.a = "you are best!";

     a1 = a2;

     peintf("%s\n",a1.a);输出为:you are best!

     如果再次声明:struct{char a[100]}b1,b2;

     那么:a1 = b1(\*wrong*\);

     因为它们的类型没有名字(结构标记),所以规定a1b1不具有同一类型

     **/

    

   return 0;

}

结构体