⑴ c语言结构体
data是你定义的一个结构类型(类似于int),DT是一个data的变量(类似于int i)。p是一个指针,用于指向一个data变量。
data的定义常见于单链表的节点结构,包含数据和指针两部分内容。数据当然是用来保存数据的,而指针用于把一个一个的节点串起来,在逻辑上形成一个链表
⑵ C语言结构体
问题在于如果你的结构的指针数真能达到极限,你怎么玩这个结构啊?
⑶ C语言结构体
结构体你就看成普通变量一样,
该在哪里就在哪里.
malloc分配的就在堆里(一般是指针),
函数里定义的就在栈里,
静态存储区里面放的是全局变量和static的.
auto是个很失败的关键字,你可以忽视.
int变量如果在main里的是不是要程序运行结束才释放内存,
因为要等mian函数退出内存才释放.
⑷ C语言结构体的用法,
结构体的使用,首先要定义:
#include<stdio.h>
structstudent
{
charname[10];
intnum;
intage;
};//注意要分号
//然后就可以使用了:
voidmain()
{
structstudents;
structstudent*p=&s;//指针指向,可以不用指针
printf("inputname:");
gets(s.name);//若使用指针,则:gets(p->name);
printf("inputnum:");
scanf("%d",&s.num);//指针的写法:scanf("%d",&p->num);
printf("inputage:");
scanf("%d",&s.age);
//输出结果:
printf("name num age ");
printf("%s %d %d ");
}
结构体类似于数组,但结构体能定义不同的数据类型,这也是它的特别之处
⑸ c语言结构体是什么
C语言结构体(Struct)从本质上讲是一种自定义的数据类型,只不过这种数据类型比较复杂,是由 int、char、float 等基本类型组成的。你可以认为结构体是一种聚合类型。
在实际开发中,我们可以将一组类型不同的、但是用来描述同一件事物的变量放到结构体中。例如,在校学生有姓名、年龄、身高、成绩等属性,学了结构体后,我们就不需要再定义多个变量了,将它们都放到结构体中即可。
简介
关键字struct和结构体名组合成一种类型标识符,其地位如同通常的int、char等类型标识符,其用途就像 int 类型标识符标识整型变量一样可以用来定义结构体变量。
定义变量以后,该变量就可以像定义的其他变量一样使用了;成员又称为成员变量,它是结构体所包含的若干个基本的结构类型,必须用“{}”括起来,并且要以分号结束,每个成员应表明具体的数据类型。
⑹ c语言中如何定义一个结构体
结构体的定义如下所示,struct为结构体关键字,tag为结构体的标志,member-list为结构体成员列表,其必须列出其所有成员;variable-list为此结构体声明的变量。在一般情况下,tag、member-list、variable-list这3部分至少要出现2个。
结构体的成员可以包含其他结构体,也可以包含指向自己结构体类型的指针,而通常这种指针的应用是为了实现一些更高级的数据结构如链表和树等。如果两个结构体互相包含,则需要对其中一个结构体进行不完整声明。
(6)c语言的结构体扩展阅读:
一、结构体作用:
结构体和其他类型基础数据类型一样,例如int类型,char类型,只不过结构体可以做成你想要的数据类型,以方便日后的使用。
在实际项目中,结构体是大量存在的,研发人员常使用结构体来封装一些属性来组成新的类型。由于C语言内部程序比较简单,研发人员通常使用结构体创造新的“属性”,其目的是简化运算。
结构体在函数中的作用不是简便,其最主要的作用就是封装。封装的好处就是可以再次利用。让使用者不必关心这个是什么,只要根据定义使用就可以了。
二、结构体的大小与内存对齐:
结构体的大小不是结构体元素单纯相加就行的,因为我们主流的计算机使用的都是32bit字长的CPU,对这类型的CPU取4个字节的数要比取一个字节要高效,也更方便。
所以在结构体中每个成员的首地址都是4的整数倍的话,取数据元素时就会相对更高效,这就是内存对齐的由来。每个特定平台上的编译器都有自己的默认“对齐系数”(也叫对齐模数)。
程序员可以通过预编译命令#pragma pack(n),n=1,2,4,8,16来改变这一系数,其中的n就是你要指定的“对齐系数”。
三、结构体的规则:
1、数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员的对齐按照#pragma pack指定的数值和这个数据成员自身长度中,比较小的那个进行。
2、结构(或联合)的整体对齐规则:在数据成员完成各自对齐之后,结构(或联合)本身也要进行对齐,对齐将按照#pragma pack指定的数值和结构(或联合)最大数据成员长度中,比较小的那个进行。
3、结合1、2可推断:当#pragma pack的n值等于或超过所有数据成员长度的时候,这个n值的大小将不产生任何效果。
⑺ c语言结构体,在线等
#include"stdio.h"
#include<string.h>
structcandidate
{
charname[15];
intcount;
}cand[5];
intmain()
{
inti,j;
charstr[15];
strcpy(cand[0].name,"Zhang");
strcpy(cand[1].name,"Li");
strcpy(cand[2].name,"Wang");
strcpy(cand[3].name,"Wrong");
for(i=0;i<10;i++)
{
printf("Inputvote%d:",i+1);
scanf("%s",str);
if(strcmp(str,cand[0].name)==0)
cand[0].count+=1;
else
{
if(strcmp(str,cand[1].name)==0)
cand[1].count+=1;
else
{
if(strcmp(str,cand[2].name)==0)
cand[2].count+=1;
else
cand[3].count+=1;
}
}
}
printf("Electionresults: ");
for(j=0;j<3;j++)
printf("%15s:%4d ",cand[j].name,cand[j].count);
printf("%sElection:%4d ",cand[3].name,cand[3].count);
}
⑻ c语言结构体
#include "stdafx.h"
#include<iostream>
using namespace std;
struct Person
{
char Name[32];
char Sex;
unsigned int Age;
};
int _tmain(int argc, _TCHAR* argv[])
{
Person per1, per2;
cout << "输入per1姓名:"; cin >> per1.Name;
cout << "输入per1性别:"; cin >> per1.Sex;
cout << "输入per1年龄:"; cin >> per1.Age;
cout << endl;
cout << "输入per2姓名:"; cin >> per2.Name;
cout << "输入per2性别:"; cin >> per2.Sex;
cout << "输入per2年龄:"; cin >> per2.Age;
cout << endl;
if (per1.Age == per2.Age)
{
cout << per1.Name << "性别:" << per1.Sex << " 与 " << per2.Name << "性别:" << per2.Sex << "同龄" << endl;
}
else
{
if (per1.Age > per2.Age)
cout << per1.Name << "性别:" << per1.Sex << " 比 " << per2.Name << "性别:" << per2.Sex << "大 " << per1.Age - per2.Age << " 岁" << endl;
else
cout << per1.Name << "性别:" << per1.Sex << " 比 " << per2.Name << "性别:" << per2.Sex << "小 " << per2.Age - per1.Age << " 岁" << endl;
}
system("pause");
return 0;
}
⑼ C语言结构体。。
dt为结构体数组, 初始化后
dt[0].x=1 dt[0].y=2
dt[1].x=3 dt[1].y=4
p=dt, 也就是指向dt[0]
输出++p->y 先自加, ++归属于y,也就是++(p->y)
所以输出的是dt[0].y自加后的值,也就是3
下一句类似, 输出再次自加的结果是4.
选C
⑽ 请问下C语言中的结构体有什么用
C语言中的结构体可以定义一些复杂数据类型,把一些有内在联系的不同变量放在一起封装成一个整体,这就是结构体。
例如:以学生为例,学生存在学号,姓名,性别,班级等。此时你可以顶一个结构体,将这些学生信息封装到一个结构体中。
code如下:
struct student{
int iID //学生的学号
char sStuName[10] //学生姓名
char sSex[10] //学生性别
....
}
(10)c语言的结构体扩展阅读
C语言结构体在函数中的应用
typedefstructtagSTUDENT{
charname[20];
intage;
}STUDENT;
voidfun(STUDENTstu)
{
printf(“stu.name=%s,stu.age=%d/n”,stu.name,stu.age);
}