纳新心得

1>

define宏:

(1)是在预处理阶段展开;
(2)没有数据类型,不做任何类型检查;
(3)可调试;
(4)不分配内存,在程序中有几次替换就分配几次内存。

const常量:

(1)是编译运行阶段使用;
(2)有具体的数据类型,执行类型检查;
(3)不能调试;
(4)分配内存,对应一个内存地址,但不重复分配内存。

2>

malloc分配二维数组时如果两次分配

    int **a
    a=(int **)malloc(n*sizeof(int *)); 
    /*第一维分配元素个数为n的指针数组,
      用来存放第二维数组每行的首地址 */ 
    for(i=0;i<n;i++)
        a[i]=(int *)malloc(m*sizeof(int));   
    //给第二维的每个数组分配m个大小的int空间

这样分配的结果会让每行的地址不连续

二维数组本质还是一维数组所以也可以一次分配

    int *a
    a=(int *)malloc(m*n*sizeof(int)); 

这样地址就是连续的


3>

指针,不管是指向结构体、数组还是基本数据类型的指针大小都一样;
32位4字节,64位8字节的;
指针大小与系统位数有关,也可能和编译器有关;
sizeof是计算数据结构所占的内存大小的;
strlen则是计算字符串的有效长度;

[数组做参数退化为指针]
(http://blog.sina.com.cn/s/blog_5db13c210100ltvn.html)

(1)数组名的内涵在于其指代实体是一种数据结构,这种数据结构就是数组;
(2)数组名的外延在于其可以转换为指向其指代实体的指针,而且是一个指针常量;
(3)数组名作为函数形参时,在函数体内,其失去了本身的内涵,仅仅只是一个指针;
(4)在失去其内涵的同时,它还失去了其常量特性,可以作自增、自减等操作,可以被修改。

4>

C语言赋值时一定要保证类型匹配
(同级的才可以相互赋值)否则会丢失数据或报错


5>

逆置数组或字符串时可用指针同时操作头和尾
要注意长度


6>

main 函数参数的作用

第一个参数argc表示输入参数的个数;
第二个参数中*argv[]是字符指针数组,每个指针指向各个具体的参数

argv[0]自身运行目录路径和程序名,argv[1]指向第一个参数···

main函数的参数值是从操作系统命令行上获得的。
执行一个可执行文件时,在DOS提示符下键入文件名,
再输入实际参数即可


7>

指针的相互赋值是让指针同时指向一个


8>

变量的存储地址
堆和栈的区别


9>

1.如果,在一个c主程序中,以include形式包含了其他所有的引用文件,在编译过程中,编译器首先会将这些文件合并到一个临时文件中,然后再对这个临时文件进行编译。
2.如果,是作为一个工程,编译器会分别编译各个独立的文件(如果文件中有include按照上一步进行),然后再将编译好的初步结果用链接程序连到一起。
3.每一个.c或者.cc都是一个编译单元,每一个编译单元编辑的结果是一个.o或者obj之类的中间文件,至于是否是多文件,不需要关心,但是要保证不同的编译单元之间不要有重复的符号,这就是要避免重复包含。
4.每一个编译单元生成的目标文件.o或者obj都会引用一些不在本目标文件中的符号,这些符号定义在别的.o或者.obj文件中, 链接器把他们联系在一起,所有的符号也就都有定义了。

10>

GCC编译C源码有四个步骤:

预处理—–> 编译 —-> 汇编 —-> 链接

1)预处理(Pre-processing)

在该阶段,编译器将C源代码中的包含的头文件如stdio.h编译进来.

选项 -e
用法:#gcc -e .c -o .i
作用:将 .c预处理输出 .i文件。

2)编译阶段(Compiling)

在这个阶段中,Gcc首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,Gcc把代码翻译成汇编语言,生成汇编代码。

选项 - s
用法:# gcc –s .i –o .s
作用:将预处理输出文件 .i汇编成 .s文件。

3)汇编阶段(Assembling)

汇编阶段是把编译阶段生成的”.s”文件转成二进制目标代码.

选项 -c
用法:# gcc –c .s –o .o
作用:将汇编输出文件 .s编译输出 .o文件。

4)链接阶段(Link)

在成功编译之后,就进入了链接阶段。

无选项

用法:# gcc .o –o .exe

作用:将编译输出文件 .o链接成最终可执行文件 .exe。


11>


结构体实际大小要满足以下几点:

1.总长度一定是成员中最大长度的倍数;
2.每个成员所占的空间长度的一定是自己长度的倍数;
3。多的空出来;

12>

判断一个数字是不是 2 的整数次幂

(1)创建一个由2的整数幂组成的数组,一一比较,若找到则是,反之不是。

(2)从1开始不断乘上2,同时与该数进行比较,若小则继续,若大则不符,若等于则是。

(3)求该数N以2的底数的值M,再将2的M次方与N相比,若相等则是,反之则不是。

(4)1>将该数对2取模
   2>若是0则将该数除2后判断是不是1;
   2.1>若是1,该数是;
   2.2>不是1则执行1>;
  3>若不是0,则该数不是。

(5)1>将这个数与1进行与运算;
   2>结果非0,则标记变量加1;
   3>若是0,则右移一位再执行1>;
  4>若标记变量值为1或0,则是2的整数次幂,反之不是。

(6)若该数与它减一进行“与”运算结果为零,则是,反之则不是。

13>

判断处理器是大端还是小端

 思路:将一个short型的字节分开查看每一个字节里面放的东西
 如果低位权的在低地址,高位权的在高地址;则是小端模式,反之则是大端模式

14>

C语言不一定从main函数开始执行


15>

 undef(C相关)     取消一个宏的定义,之后这个宏所定义的无效,可以用#define重新定义;    

pragma  once(编译相关)   保证头文件只被编译一次,同一个文件不会被编译多次;

pragma  message("信息")     在编译信息输出窗口中输出相应的信息

16

动态数组

 越界用长度判断
 扩展空间实质是重新申请的一段空间再将原来的释放掉

17>

重点在算法

 问题=程序+算法

解决:

 1.会一门程序语言
 2.懂得处理问题的方法
 3.用语言翻译方法

18>

学习
排序算法


19>

申请的指针一定要释放


20>

C指针往往会因误操作会导致有可能指向一空地址,或系统所使用地址这样会影响系统.
常见的内存错误如下:

1,内存分配未成功,却使用了它。(使用assert检查(p == NULL))
2,内存分配虽然成功,但是尚未初始化就引用它。
3,内存分配成功并且已经初始化,但操作越过了内存的边界。(数组下标) 
4,忘记了释放内存,造成内存泄露。(delete/free)
5,释放了内存却继续使用它(留下野指针,危险)。

标题基于SpringBoot+Vue的学生交流互助平台研究AI更换标题第1章引言介绍学生交流互助平台的研究背景、意义、现状、方法与创新点。1.1研究背景与意义分析学生交流互助平台在当前教育环境下的需求及其重要性。1.2国内外研究现状综述国内外在学生交流互助平台方面的研究进展与实践应用。1.3研究方法与创新点概述本研究采用的方法论、技术路线及预期的创新成果。第2章相关理论阐述SpringBoot与Vue框架的理论基础及在学生交流互助平台中的应用。2.1SpringBoot框架概述介绍SpringBoot框架的核心思想、特点及优势。2.2Vue框架概述阐述Vue框架的基本原理、组件化开发思想及与前端的交互机制。2.3SpringBoot与Vue的整合应用探讨SpringBoot与Vue在学生交流互助平台中的整合方式及优势。第3章平台需求分析深入分析学生交流互助平台的功能需求、非功能需求及用户体验要求。3.1功能需求分析详细阐述平台的各项功能需求,如用户管理、信息交流、互助学习等。3.2非功能需求分析对平台的性能、安全性、可扩展性等非功能需求进行分析。3.3用户体验要求从用户角度出发,提出平台在易用性、美观性等方面的要求。第4章平台设计与实现具体描述学生交流互助平台的架构设计、功能实现及前后端交互细节。4.1平台架构设计给出平台的整体架构设计,包括前后端分离、微服务架构等思想的应用。4.2功能模块实现详细阐述各个功能模块的实现过程,如用户登录注册、信息发布与查看、在线交流等。4.3前后端交互细节介绍前后端数据交互的方式、接口设计及数据传输过程中的安全问题。第5章平台测试与优化对平台进行全面的测试,发现并解决潜在问题,同时进行优化以提高性能。5.1测试环境与方案介绍测试环境的搭建及所采用的测试方案,包括单元测试、集成测试等。5.2测试结果分析对测试结果进行详细分析,找出问题的根源并
内容概要:本文详细介绍了一个基于灰狼优化算法(GWO)优化的卷积双向长短期记忆神经网络(CNN-BiLSTM)融合注意力机制的多变量多步时间序列预测项目。该项目旨在解决传统时序预测方法难以捕捉非线性、复杂时序依赖关系的问题,通过融合CNN的空间特征提取、BiLSTM的时序建模能力及注意力机制的动态权重调节能力,实现对多变量多步时间序列的精准预测。项目不仅涵盖了数据预处理、模型构建与训练、性能评估,还包括了GUI界面的设计与实现。此外,文章还讨论了模型的部署、应用领域及其未来改进方向。 适合人群:具备一定编程基础,特别是对深度学习、时间序列预测及优化算法有一定了解的研发人员和数据科学家。 使用场景及目标:①用于智能电网负荷预测、金融市场多资产价格预测、环境气象多参数预报、智能制造设备状态监测与预测维护、交通流量预测与智慧交通管理、医疗健康多指标预测等领域;②提升多变量多步时间序列预测精度,优化资源调度和风险管控;③实现自动化超参数优化,降低人工调参成本,提高模型训练效率;④增强模型对复杂时序数据特征的学习能力,促进智能决策支持应用。 阅读建议:此资源不仅提供了详细的代码实现和模型架构解析,还深入探讨了模型优化和实际应用中的挑战与解决方案。因此,在学习过程中,建议结合理论与实践,逐步理解各个模块的功能和实现细节,并尝试在自己的项目中应用这些技术和方法。同时,注意数据预处理的重要性,合理设置模型参数与网络结构,控制多步预测误差传播,防范过拟合,规划计算资源与训练时间,关注模型的可解释性和透明度,以及持续更新与迭代模型,以适应数据分布的变化。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值