定义一个数组之后 这样做什么意思python structt STUDENT STD[100];

1872人阅读
对于在头文件中定义的全局结构数组变量,如何对其进行赋值,对于这个问题,经过我的尝试,我发现,只有一种方法:
在main函数定义一个新的变量,然后在通过赋值给它,如果直接对其通过 xxx【x】 = { 。。。}的方式进行赋值,编译报错
具体什么原因我暂时也没搞清楚。
下面是我使用的测试例子:
/*****struct_init.h*******/
typedef &struct student{
char name[10];
/******structInit.c*******/
#include &stdio.h&
#include &stdlib.h&
#include "struct_init.h"
void main()
int i = 0;
/*定义临时变量,然后赋值给s[2]*/
stu s1[2] = {
{"wangpeiyao",10},
{"wanghao",11}
// s[0] = {"wangpeiyao",10} &//这样不可以,编译时会提示出错
s[0] = s1[0];
s[1] = s1[1];
for(i = 0; i & 10 ; i++)
&printf("good/n");
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:151251次
积分:2376
积分:2376
排名:第11393名
原创:78篇
转载:66篇
评论:12条
(1)(2)(3)(1)(3)(3)(9)(1)(3)(4)(12)(14)(2)(1)(1)(2)(4)(1)(1)(1)(1)(1)(3)(1)(2)(6)(1)(1)(2)(5)(1)(4)(2)(1)(16)(21)(3)(2)(1)(1)博客访问: 55642
博文数量: 54
博客积分: 450
博客等级: 下士
技术积分: 165
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: C/C++
原文地址: 作者:
分析下面定义struct的方法:struct A{&&&char c[0];};看上面的结构定义很有意思,这么定义的目的是为了让结构中能有变长数组,但是次处却用了一个长度为0的数组而不是用一个数组?那是为什么呢?主要原因如下:1 不需要初始化,数组名直接就是所在的偏移量.2 不占任何空间,指针只需要占用int长度空间,空数组不占任何空间&&& 空数组不占任何长度的空间,说明这样存储节省空间.该数组的内存地址就和他后面的元素地址相同,意味着无需初始化,数组名就是后面元素的地址,直接能当指针用.如果定义成指针则指针占用空间,是间接寻址,并且需要初始化,在释放内存空间时需要释放两次.这样的定义结构最适合制作动态buffer.&1 空间分配比较简单&&& &&&&&&& 因为这样分配空间:malloc(sizeof(struct a)+buff_len)把结构体和缓冲区一块分配了.用起来也非常方便,因为现在空数组变成了buff_len长度的数组了.一次分配解决问题,省了不少的麻烦.如果是两次分配(结构体和缓冲区),那么第二次malloc失败了,必须回滚释放第一个分配的结构体.这样带来了编码的麻烦;第二,分配了第二个缓冲区后,如果结构里面的是指针,则要为其赋植.同样,free也要进行两次.2 防止了小碎片& 如果是指针,则buffer的struct部分就是小内存了,存在这样的小内存多了势必会影响内存管理的性能.要是用空数组把struct和实际数据缓冲区一次分配大块数据,就没有这个问题了.如此看来,用空数组既简化了编码,又解决了小内存碎片问题提高了性能
阅读(104) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。1定义一个结构体数组存放10个学生的学号姓名三门课的成绩
1. 定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩2. 从键盘输入10个学生的以上内容3. 输出单门课成绩最高的学生的学号、姓名、以及该门课程的成绩4. 输出三门课程的平均分数最高的学生的学号、姓名及其平均分5. 将10个学生按照平均分数从高到低进行排序,输出结果,格式如下所示:number     name   math   Chinese   English    average103        tom    90      90       100           95101      alice    90      80       70            80
09-12-26 &匿名提问
您好#include &iostream&&br&#include &cstdlib&&br&&br&int main()&br&{&br& int msg[10][4], max, avr[10];&br& int i, j, for(i = 0; i & 10; i++)&br& {&br&  printf(&第%d个学生的学号:&, i+1);&br&  scanf(&%d&, &msg[i][0]);&br&  for(j = 1; j & 4; j++)&br&  {&br&   printf(&第%d门课程的成绩:&, j);&br&   scanf(&%d&, &msg[i][j]);&br&  }&br&  system(&cls&);&br& } for(j = 1; j & 4; j++)&br& {&br&  max = msg[0][j]; maxi = 0;&br&  for(i = 0; i & 10; i++)&br&   if(max & msg[i][j]) { max = msg[i][j]; maxi = }&br&  printf(&第%d门成绩最高的学生学号为%d\n&, maxi+1, j);&br& } for(i = 0; i & 10; i++)&br& {&br&  avr[i] = 0;&br&  for(j = 1; j & 4; j++)&br&   avr[i] += msg[i][j];&br&  avr[i] /= 3;&br& }&br& max = avr[0]; maxi = 0;&br& for(i = 0; i & 10; i++)&br&  if(max & avr[i]) { max = avr[i]; maxi = }&br& printf(&平均分数最高为%d分的学生学号为%d\n&, maxi+1, max);&br& return 0;&br&}
请登录后再发表评论!
聚焦论坛来吧问答博客部落更多城市娱乐相册音乐分类信息掌中天涯天涯文学天涯爱墙登录天涯 注册天涯 帮助 首页 & 提问列表 & 提问1定义一个结构体数组存放10个学生的学号姓名三门课的成绩[台州市 编程]1个回答10次浏览浙江过客 15:32:04 122.244.161.*举报回答引用: 添加引用:登录并发表回答取消在谷歌搜索1定义一个结构体数组存放10个学生的学号姓名三门课的成绩正在发表回答,请稍候……您输入的内容将会在您成功登录之后自动发表.回答按时间排序按投票数排序-10-7 9:26:12 119.113.164.*举报struct cs{};struct student{char name[20]; }st[10]; 回答您可能会感兴趣定义一个结构体数组存放10个学生的学号姓名三门课的成绩 - 1个回答 101次浏览 - 2个回答 84次浏览小学信息学编程定义 - 3个回答 48次浏览 - 3个回答 347次浏览 - 3个回答 261次浏览 - 1个回答 59次浏览
请登录后再发表评论!

我要回帖

更多关于 python struct 的文章

 

随机推荐