驱动高手和c语言高手请进,一个神奇的结构体,求解

2024-04-30 05:48

1. 驱动高手和c语言高手请进,一个神奇的结构体,求解

1.建议你看以下GUN C的扩展语法。这是ext2文件系统的操作函数,应该是Linux内核的。
2.以上的代码作用是:给结构体中的每个成员赋值。用点号和结构体成员名赋值的用法内核中很常见的。
3.这种方式可以不必给结构体所有的成员赋值,也可以不按顺序。其他没用点号赋值的成员默认为空。

驱动高手和c语言高手请进,一个神奇的结构体,求解

2. c语言里面的结构体是什么意思

结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,叫做结构。
在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。
结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。

扩展资料将一个结构体变量中的数据传递给另一个函数,有下列3种方法:
(1) 用结构体变量名作参数。一般较少用这种方法。
(2) 用指向结构体变量的指针作实参,将结构体变量的地址传给形参。
(3) 用结构体变量的引用变量作函数参数。
在软件开发过程中,常常需要动态地分配和撤销内存空间,例如对动态链表中结点的插入与删除。C语言中是利用库函数malloc和free来分配和撤销内存空间的。
参考资料来源:百度百科--结构体

3. C语言高手请进

C里面定义结构体后是还没有分配空间的,
所以不能直接用,
C++和Java的new关键字就在声明的同时申请了内存空间。
——————————————
如果是内置数据类型,比如整形或者字符型,
编译器是知道它占多大空间的,所以可以实时分配。但是自定义数据类型编译器就不知道如何去分配空间了,因为C还不是面向对象的。

C语言高手请进

4. 一道C语言结构体的题,高手请进。

/*
定义一个结构体数组,存放10个学生的信息,每位学生的信息是一个结构体类型数组,其成员分别为:学号、姓名、性别、五门成绩及总分。
要求编写3个函数,它们的功能分别为:
(1) 输入函数,用于从键盘读入学号、姓名、性别、五门成绩;
(2) 计算总分函数,用于计算每位学生的总分;
(3) 输出显示函数,显示每位学生的学号、姓名、性别和总分;
这3个函数的形式参数均为结构体指针和整型变量,函数的类型为void 。
*/
#include
#include

struct  record
{
 char  code[20]; /* 学号 */
 char  name[20]; /* 姓名 */
 char  sex[20];  /* 性别 */
 int  score[5]; /* 5门课程成绩 */
};
int total[10];

void input(record *stu,int n)//从键盘输入10个学生的各项信息
{
 int i,j;
 for(i=0;i<n;i++)
 {
  printf("\n输入第%d个学生信息:\n",i+1);
  printf("输入学生学号:"); 
  scanf("%s",stu[i].code); 
  printf("输入学生姓名:"); 
  scanf("%s",stu[i].name);  
  printf("输入学生性别:"); 
  scanf("%s",stu[i].sex); 
  printf("输入5门课程成绩:"); 
  for(j=0;j<5;j++)
   scanf("%d",&stu[i].score[j]);
  }
}
void total_count(record *stu,int n)//计算每位学生的总分
{
 int i,j;
 for(i=0;i<n;i++)
  for(j=0;j<5;j++)
   total[i]+=stu[i].score[j];
}
  


void disp(record *stu,int n)//显示每位学生的学号、姓名、性别和总分
{
 int i;
 printf("学号\t姓名\t性别\t总分\n");
 for(i=0;i<n;i++)
 {
  printf("%s\t%s\t%s\t%d\n",stu[i].code,stu[i].name,stu[i].sex,total[i]);
 }
}


void main()
{
 record stu[10]; 
 
 printf("请输入学生信息!!\n");
 input(stu,10);
 
 printf("计算每位学生的总分!!\n");
 total_count(stu,10);
 
 printf("\n显示每位学生的学号、姓名、性别和总分:\n");
 disp(stu,10);
}

运行结果:
请输入学生信息!!

输入第1个学生信息:
输入学生学号:0201
输入学生姓名:huang
输入学生性别:male
输入5门课程成绩:90 90 90 90 90

输入第2个学生信息:
输入学生学号:0202
输入学生姓名:sing
输入学生性别:female
输入5门课程成绩:89 78 67

90 89

输入第3个学生信息:
输入学生学号:0203
输入学生姓名:sun
输入学生性别:male
输入5门课程成绩:56 98 75 42 56

输入第4个学生信息:
输入学生学号:0204
输入学生姓名:zhun
输入学生性别:female
输入5门课程成绩:86 53 64 67 56

输入第5个学生信息:
输入学生学号:0205
输入学生姓名:sun
输入学生性别:female
输入5门课程成绩:85 75 86 78 75

输入第6个学生信息:
输入学生学号:0206
输入学生姓名:tiao
输入学生性别:female
输入5门课程成绩:95 74 75 76 74

输入第7个学生信息:
输入学生学号:0207
输入学生姓名:ye
输入学生性别:female
输入5门课程成绩:45 76 84 72 75

输入第8个学生信息:
输入学生学号:0208
输入学生姓名:ting
输入学生性别:male
输入5门课程成绩:45 78 68 79 84

输入第9个学生信息:
输入学生学号:0209
输入学生姓名:wei
输入学生性别:male
输入5门课程成绩:75 84 82 80 81

输入第10个学生信息:
输入学生学号:0210
输入学生姓名:zhu
输入学生性别:male
输入5门课程成绩:78 95 98 97 94
计算每位学生的总分!!

显示每位学生的学号、姓名、性别和总分:
学号    姓名    性别    总分
0201    huang   male    450
0202    sing    female  413
0203    sun     male    327
0204    zhun    female  326
0205    sun     female  399
0206    tiao    female  394
0207    ye      female  352
0208    ting    male    354
0209    wei     male    402
0210    zhu     male    462
Press any key to continue

5. C语言高手请进~~~~~

i1已经赋值了阿
static  struct  s  a[3]={1,&a[1],2,&a[2],3,&a[0]},这里定义了一个 结构数组a ,并且将其初始化了,其中a[0]={1,&a[1]},a[1]={2,&a[2]}
a[2]={3,&a[0]},
后面ptr = &a[1];就是让ptr指向a[1],所以ptr的值就是{2,&a[2]},
也就是ptr->i1=2,答案d又给他做了自增1,结果为3了。

C语言高手请进~~~~~

6. c语言高手请进

第一题:
(1)下标法
#include
#include
void main()
{
    int a[10]={0,1,2,3,4,5,6,7,8,9};
	int m;
	printf("请输入移动的位数:\n");
	scanf("%d",&m);
	int b[10]={0};
	int i,j;
	printf("移动前的数组是:\n");
	for(i=0;i<10;i++)
	{
		b[i]=a[i];
		printf("%d  ",a[i]);
	}
	printf("\n");
	for(i=9;i>=m;i--)
	{
		//j++;
		a[i]=a[i-m];
	}
	for(i=0,j=10-m;i<m;i++,j++)
		a[i]=b[j];
	printf("移动后的数组是:\n");
	for(i=0;i<10;i++)
		printf("%d  ",a[i]);
    printf("\n");
} 
(2)指针法
#include
#include
void main()
{
    int a[10]={0,1,2,3,4,5,6,7,8,9};
	int m;
	printf("请输入移动的位数:\n");
	scanf("%d",&m);
	int b[10]={0};
	int *p,*q;
	printf("移动前的数组是:\n");
	for(p=a,q=b;p<a+10;p++,q++)
	{
		*q=*p;
		printf("%d  ",*p);
	}
	printf("\n");
	for(p=a+9;p>=a+m;p--)
	{
		*p=*(p-m);
	}
	for(p=a,q=b+10-m;p<a+m;p++,q++)
		*p=*q;
	printf("移动后的数组是:\n");
	for(p=a;p<a+10;p++)
		printf("%d  ",*p);
    printf("\n");
}

7. 怎么样用C语言添加结构体信息 高手请进~~~~~``

struct student{

char name;
int number;
struct student *next;
}
这样你定义了三个字段,姓名,number
我不知道你为什么这么定义,如果是我可能这么定义

struct student {
char name;/*学生姓名*/
int 性别; /*1代表femail (女性), 0 代表mail(男性)*/
int age;
struct student *next; /*为了用链表实现而采用*/
};

这样完全可以实现你需要的数据类型.只需要再加上一些算法就可以了.

如果还有什么问题可以与我联系.

一般工业上都会使用 typedef 来定义公司内部的统一定义如
typedef struct student {

};

怎么样用C语言添加结构体信息  高手请进~~~~~``

8. C语言中,用结构体类型里的元素时,用–>与用点用什么不同

L–>length和L.length
那是由于结构体和ss指针的区分哦~