课后作业10

news/2025/12/6 20:41:02/文章来源:https://www.cnblogs.com/zhangchenxin/p/19316376
  1. void 是 C 语言的基本数据类型,可以定义 void 变量和 void* 指针变量。

错误。肯定没有 void 变量,但是课本里面基本数据类型是:整型、字符型、实型

  1. 可变长数组可以通过 realloc 调整分配的内存大小,例如
int n;
scanf("%d", &n);
int a[n];
...
int *p = realloc(a, n * 2);

错误。这个 a 是可变长数组,它本身也是一个整型指针常量。realloc 是赋值给指针变量的。

  1. 在定义嵌套的结构类型时,必须先定义成员的结构类型,再定义主结构类型。

正确。理解为你得先定义了才能用,而且C语言也没有JS啥的花里胡哨的嵌套,你必须得主结构上面定义,不能套在主结构里面。

  1. C语言把结构的定义看做一条语句。

课本抠出来的,感觉有用,因为这个所以要加分号。

  1. 结构变量部分初始化时,未显示初始化的成员会自动赋值为0。

实测是对的。

  1. 一个结构类型变量所占的内存空间是其各个成员所占内存空间之和。

C语言存在内存对齐和字节填充的规则,课本上说“通常,一个结构类型变量所占的内存空间是其各个成员所占内存空间之和。”,但是事实上不是这样子。

  • 对齐大小:基本数据类型的对齐大小就是占用的字节数。
  • 成员对齐:每个成员的偏移量(指从结构体变量分配的地址起始值的偏移量,为一个非负整数,可能为0)必须是其对齐大小的整数倍。
  • 结构体大小:必须是最大成员对齐值(其实就是它自己的对齐大小)的整数倍。
  • 结构体对齐:结构体本身的对齐值等于其成员中最大的对齐值。

在C语言中,结构体中的数组是按照元素类型进行对齐的,而不是按照整个数组长度对齐。

注意:内部结构体也要看成一个新的整体的类型,唯一不同就是对齐大小。基本数据类型的对齐大小就是占用的字节数,结构体类型的对齐大小就是它内部成员的对齐大小的最大值。

  1. 不同类型的结构变量之间也可以直接赋值。

错误。课本原话:“只有相同结构类型的变量之间才可以直接赋值”。

  1. 在对结构变量操作时,. 被称为成员或者分量运算符。

正确,积累一下。

  1. 结构成员操作符 . 和指向运算符 -> 优先级相同,左结合。

正确,主要在于左结合,应该意思就是结合性(从左到右)。

  1. scanf("%d\n", ...)scanf("%d", ...); getchar(); 的区别:前者会过滤所有空白字符,后者只会过滤一个换行。因为 scanf 里面空格、换行、制表符是等价的,意思都是过滤空白字符。

  2. 下面代码不存在内存泄露

typedef struct point {int x, y;
} Point;
Point *NewPoint()
{return (Point *) malloc(sizeof(Point));
}
void f()
{Point *p = NewPoint();Point *q = NewPoint();p = q;......free(p);free(q);
}

内存泄漏(Memory Leak)是指程序在运行过程中,动态申请的内存(通常用 malloccallocnew 等分配)在使用完毕后没有被正确释放,导致这部分内存无法被操作系统回收再利用的现象。

所以这个选项是错误的,因为 p 泄露了。另外,双重释放(同一块动态分配的内存被释放了两次),会导致未定义行为。

  1. 输入一个正整数 n(1< n ≤10),再输入 n 个整数,其间以空格分隔,计算并输出这 n 个整数的和。要求使用动态内存分配方法为这 n 个整数分配空间。
# include <stdio.h>
# include <stdlib.h>int main()
{int i, n, sum;int *p;scanf("%d", &n);if (...) {printf("Not able to allocate memory. \n");exit(1);}for (i = 0; i < n; i++){...}    sum = 0;for (i = 0; i < n; i++) {...}printf("%d\n",sum);free(p) ;return 0;
}

首先,# include,中间竟然可以有一个空格。

后面两个很简单,第一个我感觉得用短路运算:(n > 10 || n <= 1) || ((p=malloc(sizeof(int)*n)) && 0)

注意赋值符号的优先级很低,必须要打上括号,不然功亏一篑。

(指针只有NULL的时候逻辑表达式为假,其它指针都是真,无论其内存里面存了什么)。

  1. 内存空间用完了就可能没办法 malloc(返回NULL),返回值不需要显示转换。但是课本里面是有写一个指针。

  2. 写出下面程序段的运行结果 10,41,50

struct table {int x, y;         
}a[4]={{10, 20}, {30, 40}, {50, 60}, {70, 80}};
struct table *p = a;printf("%d,", p++->x);   /* 以下输出数据之间没有空格分隔 */
printf("%d,", ++p->y);
printf("%d", (a+3)->x);  

主要是 ++p->y,他是右结合,也就是 ++(p->y)

  1. 4-12 太难了

运行以下程序,第一个 printf 输出 ,第二个 printf 输出 。

#include <stdio.h>
struct st {int x;int *y;
};void f1(struct st a)
{a.x = 2;*a.y++ = 4;
}void f2(struct st *a)
{a->x = 3;*++a->y = 6;
}int main()
{int a[5] = { 0 };struct st s1 = { 1, a }, s2 = s1;f1(s1);printf("%d#%d#%d#%d", s1.x, *s1.y, a[0], a[1]);f2(&s2);printf("%d#%d#%d#%d", s2.x, *s2.y, a[0], a[1]);return 0;
}

答案是 1#4#4#03#6#4#6

主要是一直以为 a ++ 返回的是一个左值,似乎是不可修改的。

查了一下:

  • 后缀自增​:返回原始值(右值),不能直接赋值。
  • 前缀自增​:返回自增后的变量(左值),可以赋值。
  • 对指针解引用总是产生左值,无论指针本身是左值还是右值。

总算清楚了……

  1. 关于内存区域存储,懒得编辑了,直接copydeepseek。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/990529.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

英语_阅读_a robot for science fair_待读

Tom, Lisa and Jack faced a big challenge. 汤姆、丽莎和杰克面临着一个巨大的挑战。 Their teacher asked them to build a robot for the schools science fair. 他们的老师要求他们为学校的科学展制作一个机器人。…

std function如何消除不同functor的类型和存储差别

std function如何消除不同functor的类型和存储差别intro std::function颇有类似于python这种动态语言的特性:同一个类型可以容纳函数指针,类对象,lambda表达式等不同类型的调用方法。它既有动态语言的运行时灵活,又…

2025年靠谱的轮胎品牌哪家好?口碑好的轮胎品牌哪家好?官方精选可靠品牌指南

2025年靠谱的轮胎品牌哪家好?口碑好的轮胎品牌哪家好?官方精选可靠品牌指南在当前汽车消费加速迭代与新能源渗透率持续提升的背景下,“2025年靠谱且口碑好的轮胎品牌哪家好”正迅速跃升为市场与消费者共同聚焦的决策…

2025年什么牌子的轮胎比较好:权威测评优质轮胎排行

2025年什么牌子的轮胎比较好:权威测评优质轮胎排行2025年什么牌子的轮胎比较好,已成为当前汽车后市场与整车配套领域共同聚焦的战略议题。在新能源渗透率持续攀升、全球贸易格局重构、消费升级加速的背景下,消费者对…

权重衰减

在深度学习中,权重衰减(Weight Decay) 是一种常用的正则化技术,用于防止模型过拟合。它通过在损失函数中添加一个正则化项来限制模型的复杂度,从而提高模型的泛化能力。 1. 权重衰减的原理 权重衰减的核心思想是在…

2025年中国前五轮胎品牌:权威TOP10轮胎榜单发布

2025年中国前五轮胎品牌:权威TOP10轮胎榜单发布2025年中国前五轮胎品牌已成为当前汽车后市场与整车配套领域共同聚焦的核心议题,在新能源浪潮重塑产业格局、全球贸易环境波动加剧的背景下,这一排名不仅关乎品牌位次…

完整教程:简析单目相机模型中的针孔模型

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

问界M8更换轮胎推荐:2025年效率提升80%的推荐

问界M8更换轮胎推荐:2025年效率提升80%的推荐在高端MPV市场快速演进的背景下,问界M8更换轮胎推荐正成为商务精英与高端家庭用户决策链条中的关键节点。Mintel长期监测数据显示,伴随MPV从单纯工具属性向商务接待与高…

题解 CF 2173 Div2

题解 CF 2173 Div2原文来自CnBlogs, 作者: young_tea.

faster r cnn中的动量

在动量优化算法中,动量参数(通常用 β 表示)用于控制上一次梯度更新对当前更新的影响程度。动量参数的值在 0 到 1 之间,0.9 是一个常见的选择,它可以帮助优化算法更快地收敛,并且减少震荡。 在 Faster R-CNN 的…

读大话数据结构的总结1

如下知识均来自大话数据结构这本书,作者程杰 算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。 算法具有五个基本特性: 输入、输出、有穷性、确定性和可行性 1.…

车辆ID跟踪与车牌纠正分析

在车辆识别算法优化中,“车辆ID跟踪优化”(如纠正、增量识别)是评估车辆识别算法稳定性的核心指标。面对GB级的海量日志,人工排查无异于大海捞针。 分享一个轻量级 Python 分析工具,实现从日志流读取、关键事件提…

需求的分层

目录一、最核心的:什么是“概念”,什么是“需求”概念 / 方向(Concept)而需求(Requirement)必须满足三件事:1. 有清晰边界(Scope)2. 有可验证条件(Acceptance Criteria)3. 有系统间的规范定义(Contract)二…

12.5 程序员修炼之道:从小工到专家 第7章 在项目开始之前 - GENGAR

本内容聚焦项目启动前的关键准备工作,围绕需求管理、问题解决、决策判断及规范工具使用展开。 在需求管理上,需摒弃 “贪多求全” 的思维,不盲目搜集需求,而是深挖核心需求并打磨,与用户共情思考。制定需求文档时…

1pcs 3pcs是啥

1pcs 3pcs是啥1 pcs / 3 pcs 是制造业、电子业、物流里最常见的英文缩写: ✅ pcs = pieces(件、个) 所以:1 pcs = 1 个 / 1 件3 pcs = 3 个 / 3 件完全就是数量单位,跟中文的“个、只、件”一样。📦 常见用法示…

红旗HS6 PHEV更换轮胎推荐:2025年用户满意度高的方案

红旗HS6 PHEV更换轮胎推荐:2025年用户满意度高的方案为解决红旗HS6 PHEV车主在“红旗HS6 PHEV更换轮胎推荐”上的选择难题——既要化解混动车型自重高导致的承载与湿地制动隐忧,又要满足电车对静谧性的极致追求,还要…

理想L6更换轮胎推荐:2025年销量突破100万的胎压表现

理想L6更换轮胎推荐:2025年销量突破100万的胎压表现为解决用户在“理想L6更换轮胎推荐”上的选择难题,本文将以资深汽车媒体主编与产品技术分析师的视角,整合全球主流汽车媒体(如《AutoBild》、汽车之家等)的公开…

理想L9更换轮胎推荐:2025年超500万用户力荐的组合

理想L9更换轮胎推荐:2025年超500万用户力荐的组合在高端新能源SUV市场快速演进的背景下,理想L9更换轮胎推荐正成为高净值家庭用户与商务精英的核心关切。理想L9以全尺寸空间、高阶智能驾驶与豪华舒适配置构筑“移动的…

小红书玩疯了!Ai像素级拆解提示词+Nano Banan Pro免费使用教程(附Api接入实战)

大家最近有没有在小红书刷到这种像素级拆解人物的图片?真的玩疯了,有拆解二次元、美女穿搭、玩具手办、游戏角色、乐高玩具....真的万物可拆解。究竟是用什么做的?提示词是什么?今天5分钟教会你。 像素拆解用什么模…

2025.12.6日20:13-harsh无情的;粗糙的

当前已使用内存:MB是340 南京4℃ 霾 今日热点如下 LPL全明星,英国首相花7亿救鱼引争议,元婴集结启程探遗迹,顶级F1车队有多烧钱,鸣潮今州杯S8 Day4,F1阿布扎比历年名场面,Netflix将收购华纳兄弟,黄日华,解析LPL转会后阵…