C语言结构体数组同时赋值的另类用法

说到C语言结构体数组的同时赋值,许多人一想就会想到用以下的这种方法,咱们来写一个例子:

#include <stdio.h>
struct student
{
	int a;
	int b ;
	int c ;
};
struct student array1[1000] ;
int main(void)
{
	int i ;
	for(i = 0 ; i < 1000 ; i++)
	{
		array[i].a = 1 ;
		array[i].b = 2 ;
		array[i].c = 3 ;
	}
	for(i = 0 ; i < 1000 ; i++)
	{
		printf("array[%d].a:%d array[%d].b:%d array[%d].c:%d \n"  ,
		i, array[i].a ,i, array[i].b ,i, array[i].c);
	}
	return 0 ;
}

运行结果:
这样就可以实现对结构体数组同时赋值了。

阅读Linux内核源代码的时候看到了,原来C语言还有一种更少人知道的方法,使用 "..." 的形式,这种形式是指第几个元素到第几个元素,都是一样的内容。这种用法在标准C上也是允许的,没有语法错误,我们来看看它是怎么用的:

#include <stdio.h>
struct student
{
	int a;
	int b ;
	int c ;
};
//对第0个数组到第999个结构体数组同时赋值一样的内容
struct student array[1000] = {
	[0 ... 999] = {
	.a = 1 ,
	.b = 2 ,
	.c = 3 ,
	}
};

int main(void)
{
	int i ;
	//输出赋值后的数值
	for(i = 0 ; i < 1000 ; i++)
	{
		printf("array[%d].a:%d array[%d].b:%d array[%d].c:%d \n"  ,
		i, array[i].a ,i, array[i].b ,i, array[i].c);
	}
	return 0 ;
}

运行结果:

时间: 2024-10-24 19:14:31

C语言结构体数组同时赋值的另类用法的相关文章

c语言-C语言结构体数组在头文件里赋值的问题

问题描述 C语言结构体数组在头文件里赋值的问题 上面的赋值是写在一个头文件里的,用VS2008,或者VC++6.0调都会出现上面的错误,VS2013和DEV就不会报错. 完整代码是: //头文件"信息.h" struct students { long code; char *name; float score[3]; float sum; }; void default_initiate(struct students stu[ ]) { stu[0] = { 20140001, &

C语言 结构体数组详解及示例代码_C 语言

所谓结构体数组,是指数组中的每个元素都是一个结构体.在实际应用中,结构体数组常被用来表示一个拥有相同数据结构的群体,比如一个班的学生.一个车间的职工等. 定义结构体数组和定义结构体变量的方式类似,请看下面的例子: struct stu{ char *name; //姓名 int num; //学号 int age; //年龄 char group; //所在小组 float score; //成绩 }class[5]; 表示一个班级有5个学生. 结构体数组在定义的同时也可以初始化,例如: str

c语言-C语言结构体数组与顺序表的问题

问题描述 C语言结构体数组与顺序表的问题 #define DataType struct students cla[3] struct students { long code; char *name; float score[3]; float sum; }; typedef struct { DataType list[MaxSize]; int length; }SeqList; SeqList *t; 我要修改到list[0]里结构体数组cla[0]中的code元素,应该怎么写?? 下面

图片-C语言,请教关于结构体数组的问题

问题描述 C语言,请教关于结构体数组的问题 图中倒数第二行 scanf("%d",&G[i]); 结构体VNode中有两类元素int data 和ArcNode *firstarc 为什么"&G[i]"就是给结构体VNode中的data赋值? 解决方案 &G[i]和&G[i].data的地址相同,有的编译器允许这样使用. 解决方案二: C语言结构体数组赋值问题IOS开发---C语言-?结构体数组C语言中的结构体数组 解决方案三: 我想

关于c语言结构体指针数组的问题

问题描述 关于c语言结构体指针数组的问题 我有一个数组,里面每个成员都是结构体指针,我应该怎么给这个数组分配空间? 解决方案 指针变量的长度都是固定的,与你指向什么东西没关系的. 解决方案二: #include #define N 3 struct student { long int num; char name[20]; float score[3]; float aver; }; int main() { void Input(struct student stu[]); struct s

c语言结构体中指针数组怎样赋值

问题描述 c语言结构体中指针数组怎样赋值 定义一个结构体struct AS{ char *p[1]:}:怎样用gets函数给指针数组赋值呢? 解决方案 看Unix/Linux上的man: Standard C Library Functions gets(3C)NAME gets fgets - get a string from a stream SYNOPSIS #include char *gets(char *s); char *fgets(char *s int n FILE *str

c语言编程-C语言关于使用结构体数组的问题

问题描述 C语言关于使用结构体数组的问题 #include struct Student { int mun; long char name[5]; int score[3]; struct Student *next; }; int main() { struct Student a,b,c,*head,*p; a.mun=10101;a.name="张丹";a.score[0]=89;a.score[1]=95;a.score[2]=91; b.mun=10103;a.name=&

struct-关于C语言结构体指针数组的问题

问题描述 关于C语言结构体指针数组的问题 //结构体struct student{ int iNum; char cName[16]; float fChineseScore; float fMathScore; float fEnglishScore;};typedef struct student STUDENT;//输入void InputTranscript(STUDENT MyClass[] int num){ int i; printf(""请输入学生的成绩信息:n&quo

c语言-C语言typedef问题与结构体数组问题

问题描述 C语言typedef问题与结构体数组问题 typedef struct students{ long code; char *name; float score[3]; float sum;}cla[40];这样定义是什么意思呢?cla代替了struct students?正确的写法是怎么样的 解决方案 定义了一个班级类型,它代表40个学生,cla代替了students[40]以后可以定义变量cla cla1;cla1就是一个40个students组成的数组 语法上没问题,不过个人觉得