结构体,你好!

一、定义
结构体:称为自定义数据类型
定义格式:struct 类型名
另外我们要明白:
1、自定义数据类型定义完成以后等同于内置类型
2.结构体不能定义一个自身的普通成员变量,但可以定义一个指向自身的指针变量
struct Student  
{  
    char name[20];  
    int age;  
};  
Struct A  
{  
    int a;  
    short b;  
    double c; 
    struct Student d;//ok  
    struct B e;//error  由于程序的编译是顺序的,此时struct B还未定义  
    struct A f;//error  
    //结构体不能定义一个自身的普通成员变量(无法为其分配内存空间)  
    struct A *p;//ok  
    //但可以定义一个指向自身的指针变量(指针所占的内存为4字节)  
};  
struct B  
{  
    int i;  
    char j;  
    struct A k;//ok  因为前面A定义过了 
};  


二、初始化及成员的访问
1.结构体普通变量通过“.”号来访问其成员
2.结构体指针通过“->”访问其成员
int main()  
{  
    void Show();  
    struct Student stu1;   //它的输出是随机值  
    struct Student stu2={"liubeu",20};  
    struct Student stu3={"suquan"};  //由于结构体是聚合类型,则当只初始化一部分时,剩余部分默认值为0.在此处age=0  
    stu3.age = 30;  
    strcpy(stu3.name,"zhangfei");//此处用字符串拷贝函数对其进行修改  
    struct Student *pstu = &stu2;  
    *pstu.age = 35;//error("."的优先级高于"*",但在这里应该先对pstu进行解引用后在进行"."操作)  
    (*pstu).age = 35;//ok 等同于  pstu -> age = 35; 
    strcpy(pstu->name,"zhangfei");  
    Show(&stu2);  
}  
void Show(const struct Student *pstu)  //结构体的打印函数。  
{  
    printf("%s,%d\n",pstu->name,pstu->age);  
} 

三、简单化结构体——typedef
1.typedef的使用
typedef unsigned long long int uint64; //无符号长整型8字节64位 可以简写为uint64
typedef int * Pint;//定义一个整型指针的数据类型Pint  
typedef int arr[10];//定义一个长度为10的整型数组的数据类型Arr  
typedef int(*pfun)(int,int);//函数指针的数据类型 

2.typedef重新定义结构体
typedef struct student 
{  
   char a;  
   int b;  
}student; 

3.typedef与宏定义的比较
typedef int*  Pint;//<类型定义>  
# define  Pint  int*//<字符替换>  
Pint i,j;//i,j,都是int *
PINT x,y;//在这里x为int *,y为int类型 
对其理解:
首先是去掉typedef,查看定义的变量类型,然后再加上typedef,就由该类型变量变成为这种数据类型

阅读更多
换一批

你好

06-01

请问 我想做个无限级联的省市县 事先不知道有多少级联 所以最好是动态加载的 请问DropDownList怎么实现 rnrn rn rn rn rn rn rn rnrn这个事我的BSrn下面是我的CS 有问题我做的rn protected void Page_Load(object sender, EventArgs e)rn rn rn DropDownList2.DataSource = MeetingRoomSubregionbll.Getidname();rn DropDownList2.DataTextField = "MRSName";rn DropDownList2.DataValueField = "MeetingRoomSubregionID";rn DropDownList2.DataBind();rn rnprotected void DropDownList2_SelectedIndexChanged(object sender, EventArgs e)rn rnrn for (int i = 0; i < 1; i++)rn rn DropDownList t = new DropDownList();rn t.ID = string.Format("ddl0", i);rn Panel1.Controls.Add(t);rn t.Visible = true;rn rnrn ((DropDownList)Panel1.FindControl("ddl0")).DataSource = MeetingRoomSubregionbll.Getchindname(DropDownList2.SelectedItem.Value);rn ((DropDownList)Panel1.FindControl("ddl0")).DataTextField = "MRSName";rn ((DropDownList)Panel1.FindControl("ddl0")).DataValueField = "MeetingRoomSubregionID";rn ((DropDownList)Panel1.FindControl("ddl0")).DataBind();rn ((DropDownList)Panel1.FindControl("ddl0")).SelectedIndexChanged += new EventHandler(yuding_SelectedIndexChanged);rnrn ((DropDownList)Panel1.FindControl("ddl0")).AutoPostBack=true;rn rnrn protected void yuding_SelectedIndexChanged(object sender, EventArgs e)rn rnrn for (int i = 0; i < 1; i++)rn rn DropDownList t = new DropDownList();rn t.ID = string.Format("dd1", i);rn Panel1.Controls.Add(t);rn rn ((DropDownList)Panel1.FindControl("ddl1")).AutoPostBack = true;rn ((DropDownList)Panel1.FindControl("dd1")).DataSource = MeetingRoomSubregionbll.Getchindname(((DropDownList)Panel1.FindControl("ddl0")).SelectedItem.Value);rn ((DropDownList)Panel1.FindControl("dd1")).DataTextField = "MRSName";rn ((DropDownList)Panel1.FindControl("dd1")).DataValueField = "MeetingRoomSubregionID";rn ((DropDownList)Panel1.FindControl("dd1")).DataBind();rn rn rnrn

没有更多推荐了,返回首页