当前位置:首页 » 编程语言 » c语言结构
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言结构

发布时间: 2022-02-10 08:48:16

c语言结构体。

main()函数的第一条语句,将结构体指针p指向结构体数组data,亦即指向数组的首元素地址data[0]的地址,所以,第2条语句,输出的是data[0].y,即10。

(++p)->y,由于是前缀++,因此p先自增加1,p就指向了data[1],然后输出data[1].x的值,即2。故答案是C。

㈡ C语言结构体

问题在于如果你的结构的指针数真能达到极限,你怎么玩这个结构啊?

㈢ 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程序设计语言(第2版·新版),即大名鼎鼎的 The C Programming Language,网上下电子版就可以了。

㈤ C语言结构体定义

C语言结构体定义:struct为结构体关键字,tag为结构体的标志,member-list为结构体成员列表,其必须列出其所有成员;variable-list为此结构体声明的变量。

结构体是C语言中聚合数据类型(aggregatedatatype)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问

(5)c语言结构扩展阅读

1、struct是声明结构体类型时必须使用的关键字,不能省略。“结构体”这个词是根据英文单词structure译出的。

2、structSTUDENT是定义的数据类型的名字,它向编译系统声明这是一个“结构体类型”,包括name、num、sex、age、score、addr等不同类型的项。

3、structSTUDENT与系统提供的int、char、float、double等标准类型名一样,都是数据类型,具有同样的作用,都是用来定义变量的。

㈥ c语言,结构体

结构体和其他类型基础数据类型一样,例如int类型,char类型 只不过结构体可以做成你想要的数据类型。以方便日后的使用。[1]
在实际项目中,结构体是大量存在的。研发人员常使用结构体来封装一些属性来组成新的类型。由于C语言内部程序比较简单,研发人员通常使用结构体创造新的“属性”,其目的是简化运算。[1]
结构体在函数中的作用不是简便,其最主要的作用就是封装。封装的好处就是可以再次利用。让使用者不必关心这个是什么,只要根据定义使用就可以了。[1]
结构体的大小与内存对齐
结构体的大小不是结构体元素单纯相加就行的,因为我们主流的计算机使用的都是32bit字长的CPU,对这类型的CPU取4个字节的数要比取一个字节要高效,也更方便。所以在结构体中每个成员的首地址都是4的整数倍的话,取数据元素时就会相对更高效,这就是内存对齐的由来。每个特定平台上的编译器都有自己的默认“对齐系数”(也叫对齐模数)。程序员可以通过预编译命令#pragma pack(n),n=1,2,4,8,16来改变这一系数,其中的n就是你要指定的“对齐系数”。[1]
规则:
1、数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员的对齐按照#pragma pack指定的数值和这个数据成员自身长度中,比较小的那个进行。[1]
2、结构(或联合)的整体对齐规则:在数据成员完成各自对齐之后,结构(或联合)本身也要进行对齐,对齐将按照#pragma pack指定的数值和结构(或联合)最大数据成员长度中,比较小的那个进行。[1]
3、结合1、2可推断:当#pragma pack的n值等于或超过所有数据成员长度的时候,这个n值的大小将不产生任何效果。[1]
C++中的结构体
在C语言中,可以定义结构体类型,将多个相关的变量包装成为一个整体使用。在结构体中的变量,可以是相同、部分相同,或完全不同的数据类型。在C语言中,结构体不能包含函数。在面向对象的程序设计中,对象具有状态(属性)和行为,状态保存在成员变量中,行为通过成员方法(函数)来实现。C语言中的结构体只能描述一个对象的状态,不能描述一个对象的行为。在C++中,考虑到C语言到C++语言过渡的连续性,对结构体进行了扩展,C++的结构体可以包含函数,这样,C++的结构体也具有类的功能,与class不同的是,结构体包含的函数默认为public,而不是private。

㈦ c语言结构体

data是你定义的一个结构类型(类似于int),DT是一个data的变量(类似于int i)。p是一个指针,用于指向一个data变量。
data的定义常见于单链表的节点结构,包含数据和指针两部分内容。数据当然是用来保存数据的,而指针用于把一个一个的节点串起来,在逻辑上形成一个链表

㈧ c语言结构体有哪些

如下:

第一种:只有结构体定义:

1. struct stuff{

2.char job;

3. int age;

4. float height;

5. };

第二种:附加该结构体类型的“结构体变量”的初始化的结构体定义:

1. //直接带变量名Huqinwei

2. struct stuff{

3. char job[20];

4. int age;

5. float height;

6. }Huqinwei;

也许初期看不习惯容易困惑,其实这就相当于:

1. struct stuff{

2. char job;

3. int age;

4. float height;

5. };

6. struct stuff Huqinwei;

第三种:如果该结构体你只用一个变量Huqinwei,而不再需要用。

struct stuff yourname; 去定义第二个变量。那么,附加变量初始化的结构体定义还可进一步简化出第三种:

1. struct{2. char job;

3. int age;

4.float height;

5. }Huqinwei;

㈨ C语言结构体

info_p没有初始化,它指向一个未知的地址
#include <stdio.h>
#include <string.h>
#include <conio.h>
struct student_info
{
char name[20];
unsigned int age;
unsigned int gender;
unsigned int classes;
float grade;
};
main()
{
struct student_info info[2];
struct student_info *info_p; /*your error*/
int i;
for(info_p=info;info_p<info+2;info_p++)
{
scanf("%s",info_p->name);
scanf("%d",&info_p->age);
scanf("%d",&info_p->gender);
scanf("%d",&info_p->classes);
scanf("%f",&info_p->grade);
}
for (i=0;i<2;++i)
{
printf("%s\t%d\t%d\t%d\t%f\n",info[i].name,info[i].age,info[i].gender,info[i].classes,info[i].grade);
}
}

㈩ c语言结构体

int cal_day(struct date a) //我猜测这个sum应该是计算某一年从一月份到某个月份的天数
{
int sum=0,b[]={31,28,31,30,31,30,31,31,30,31,30,31} ;//很明显b数组是正常年份12个月份的每个月的天数
for(int i=0;i<a.month-1;i++) //这里假如十二个月,那么i应该从0到11-1这十一个数字
sum+=b[i];
if(a.month>2) //如果月份数超过2就要需要判断今年是否闰年,因为闰年有变化的是2月
sum=sum+a.day+leap_year(a.year); // leap_year函数应该是判断今年是否闰年,是的话返回一个修正值,加上少算的天数,因为二月份要看是否闰年,它的天数是有变动的
else
sum=sum+a.day; //月份数少于2就说明只需要计算1月份就可以,不用判断是否闰年,直接相加
return sum;
}

这个应该是判断,某一年1月1号到某一年的几月几号多少天的函数
这里假设到3月5号,那么
sum=sum+a.day+leap_year(a.year); // sum应该是31+28,a.day=5,leap_year应该返回1,因为今年是闰年。这样sum最好应该是 31+28+5+1=65。。。
如果是到1月3号,那么
sum=sum+a.day。应该是 sum=0+3=3。
不知道是否解释对了,不过我的理解是如此