【C语言】C语言的495个问题

2023-11-12

文章目录

因为需要研究PostgreSQL源码,故需要了解C的工程知识,虽说C的基础很简单,语法集合很少,但是对于大型系统来说,但由于C缺少一些现代语言的包,类等概念,在源码经常看到一些约定俗成的“利用C来实现高级语言语法特性”的知识,在《C语言的495个问题》中,有详细的说明,下面我们就一起看看吧。

1 声明和初始化

基本类型

1.1 各类型区别

  • 正确如下,已在mac和ubuntu中验证(书中说法是至少,但实际按如下记即可)
  • char 1byte
  • short int
  • int 4 byte
  • long int 8 byte
  • long long 8 byte
# include <stdio.h>

int main() {
    printf("char: %lu\n", sizeof(char)); // 1
    printf("short int: %lu\n", sizeof(short int)); // 2
    printf("int: %lu\n", sizeof(int)); // 4
    printf("long: %lu\n", sizeof(long)); // 8
    printf("long long: %lu\n", sizeof(long long)); // 8
    return 0;
}

1.2 为什么不精确定义标准类型的大小

C语言相对低级,其设计理念认为类型大小应该有具体实现来决定, 虽然这很容易出矛盾

1.3 因为C没有精确定义标准类型大小,那么用typedef定义int16和int32是否能解决问题呢

是的,但其实标准头文件<inttypes.h>中已经定义了int16_tuint_32_t类型

1.4 新64位机上64位类型是什么样的

  • 增加了long long: 至少64bit

1.5 char *p1, p2有什么问题

  • 这样表示p1是指针,但p2是值。
  • 应改为char *p1, *p2;

1.6 malloc用法

正确方式如下, 注意malloc函数返回的是指针

#include <stdlib.h>

int main() {
    char *p;
    p = malloc(10);
    return 0;
}

声明风格

1.7 全局变量和函数应该怎么定义&&声明?

  • 可以声明多次,但只能定义一次。
  • 一般在.c文件中定义,在.h文件·中声明,这样使用者只要引用了.h文件就拥有了声明。
    • 变量声明是extern int i;
    • 函数声明是extern int f();
    • 变量定义是int i = 0;
    • 函数定义是int f() {return 1;}
    • 尤其是把外部函数的声明放在.h中,而不是.c中,防止外部函数原型变化了,但.c文件中忘记更改导致错误的函数原型贻害无穷。
  • c文件一般也要引用对应的h文件,这样编译器可以检查c和h文件中声明与定义是否一致。

1.8 怎么在C中实现不透明数据类型?

见2.4

1.9 怎么生成半全局变量,就是那种只能被部分源文件中国的函数访问的变量?

  • C原生不支持,
  • 为了实现变量分包来管理, 有2种解决方案:
    • 包内的变量都带固定前缀,“口头约定”使用者不能定义相同前缀的变量
    • 变量用下划线开头

存储类型

1.10 static函数内的变量都必须是static的吗

尽量这样做

1.11 extern 函数声明的作用

  • 可以当做一种格式上的提示,指明函数的定义可能在别的c文件中
  • 其实extern int f();int f();没有区别

1.12 auto的作用

没啥用,过时了

类型定义typedef

1.13用户定义的类型,typedef#define的区别?

  • 尽量用typedef,因为能更好的处理指针类型
  • #define主要是配合#ifdef宏使用的

1.14 定义链表报错

  • struct可以包含“指向 自己类型 的指针”,但要提前声明该struct类型
  • 以下三种均可
struct node {
    char *item;
    struct node *next;
};
typedef struct node *NodePtr;

int main() {
    NodePtr a;
    NodePtr b;
    return 1;
}
struct node;
typedef struct node *NodePtr;
struct node {
    char *item;
    NodePtr *next;
};

int main() {
    NodePtr a;
    NodePtr b;
    return 1;
}
typedef struct node {
    char *item;
    struct node *next;
} *NodePtr;

int main() {
    NodePtr a;
    NodePtr b;
    return 1;
}

1.15 定义一对相互引用的结构

以下两种均可

struct a {
    int field;
    struct b *bpointer;
};

struct b {
    int bfield;
    struct a *apointer;
};

int main() {
    struct a aa;
    struct b bb;
    return 1;
}
struct a;
struct b;
typedef struct a *APTR;
typedef struct b *BPTR;
struct a {
    int afield;
    BPTR bpointer;
};
struct b {
    int bfield;
    APTR pointer;
};

int main() {
    APTR aa;
    BPTR bb;
    return 1;
}

1.16 struct定义和typedef struct定义的区别

见2.1

1.17 typedef int (*funcptr) ();是什么意思?

  • 函数指针,传参为空,返回int
  • 等价于如下
funcptr fp1, fp2;
int (*pf1) (), (*pf2) ();

1.18 const限定词

typedef char *charp;
const charp p;

const修饰的是指针p,而不是指针p所指向的变量

1.19 为什么数组 维度值中,不能用const值

const int n = 5;
int a[n];

是不允许,会报错

1.20 const char *p, char const *p, char *const p的区别?

见11.10和1.21

复杂的声明

1.21 非常复杂的声明怎么理解,定义一个包含N个指向返回指向字符的指针的函数的指针的数组?

  • 可以用逐层定义

1.22 用C定义状态机

数组大小

1.23 能不能声明和传入数组大小一直的局部数组,或者有参数指定大小的参数数组?

不能

1.24 file1.c中定义extern数组,在file2.c中,为什么用sizeof取不到数组大小

// file1.c
int array[] = {1,2,3};
// file2.c
extern int array[];
  • 未指定数组大小的extern数组,是不完全类型,不能用sizeof
  • 有如下三种方案
// file1.c
int array[] = {1, 2, 3};
int arraysz = sizeof(array);

// file2.c
# include <stdlib.h>
# include <stdio.h>
extern int array[];
extern int arraysz;

int main() {
//    int sz = sizeof(array);
//    printf("%d\n", sz);
    printf("%d\n", arraysz);
    return 1;
}
// file1.h
#define ARRAYSZ 3

// file1.c
# include "file1.h"
int array[ARRAYSZ] = {1, 2, 3};

// file2.c
# include "file1.h"
# include <stdio.h>
extern int array[];

int main() {
    printf("%d\n", ARRAYSZ);
    return 1;
}

或者给数组末尾加哨兵位(如-1, NULL等)

声明问题

1.25 函数定义一次,调用一次,但编译器提示非法重复声明?

可能是函数没有声明,或者和引入的某头文件中的函数同名了。

1.26 void main()对吗

不对,见11.7

1.27 编译器包函数原型不匹配

见11.4

1.28 文件中第一个声明就爆出奇怪的语法错误,为什么

见10.9

1.29 编译器不允许我定义大数组,如double array[256][256]

见19.28和7.20

命名空间

1.30 怎么判断哪些标识符可以用,哪些被保留了

略 不要用下划线开头,容易出问题

初始化

1.31 没有显示初始化的值?全局变量初始化为0?

  • static变量,未初始化时,C可以确保初始值是0
  • 全局和局部变量,未初始化时,内容是未定义的垃圾内容,不能做任何有用的假设(包括用malloc和realloc申请的堆内存,也需要手动做初始化,否则也是未定义的垃圾内容)

1.32 为什么不能编译如下char[]代码

如果char[] a = "";不行的话,可以用char *a = "";或者char a[10]; strcpy(a, "");

1.33 编译器提示invalid initializers

不明白

1.34 以下初始化的区别

char[] a = "";char *a = "";,字符串字面量是内存中只读区域的,有的编译器会控制其是否可写,所以对a的写操作是否报错,取决于编译器的种类

1.35 char{a[3]} = "abc"是合法的

对,是合法的

1.36 函数指针怎么初始化

extern int func();
int (*fp)() = func;

fp是指向函数的指针

1.37 能初始化union联合体吗

是,可以

2 struct,union和enum的区别

结构声明

2.1 struct和typedef struct的区别

用struct定义的话,使用时也得带上struct关键字,反之则不用

2.2 struct和typedef struct的使用

struct x {};
struct x a;

// 或
typedef struct x{} y;
y a;

// 或可以重名
typedef struct x{} x;
x a;

2.3 struct可以包含指向自己的指针么?

可以,见1.14和1.15

2.4 C语言,用什么方法实现抽象数据类型最好?

不明

2.5 C能否实现面向对象程序的一些好特性

  • 把函数指针,放入struct,可以实现“类的方法”
  • 继承:通过预处理器,或让积累的结构作为初始的子集
  • 没有重载和覆盖

2.6 为啥声明报错

见11.6

2.7 struct内数组初始化很小的size,但实际装很大的容量,是一种通用的技术

通过struct,然后提供一个函数,可以初始化数组, 详细见数上的4个例子

2.8 struct变量作为函数的入参和出参,是合法的

这种方式传递的是浅拷贝,struct内的指针成员指向的还是原地址,而不是复制出新的一份儿

2.9 为什么不能用==和!=来做比较

遇到未使用的hole洞时会出问题,所以一般char*都是用strcmp比较而不是==

2.10 传参是struct时,内部发生了什么

  • 传参是struct时,会把struct推到stack里,所以浪费stack空间
  • 因此一般都传指针,而不是传struct

2.11 如何解说struct做传参,怎样创建无名的中间常量struct

可以用匿名struct

plotpoint((struct point){1,2});plotpoint((struct point){.x=1, .y=2});

2.12 怎样读写文件

  • fwrite()
  • fread()
  • 注意移植性

结构填充

2.13 内存对齐

  • 当内存对齐时,很多机器能更高效的访问,因此编译器会的struct做内存对齐
  • 比如按byte寻址的机器,2字节的short int必须放在偶数地址上,4byte的long int必须放在整数倍地址上
  • 有些机器压根不能访问没有内存对齐的机器
  • sizeof返回的是对齐后的值

2.15 如何确定域在struct内的字节偏移量

# define offsetof(type, f) ((size_t) \ ((char *)&((type *)0)->f -(char *)(type *) 0))

2.16 怎样在运行中用名字,访问结构中的域

offsetb = offsetof(struct a, b);
*(int *) ((char *)structp + offsetb) = value;

2.18 数组名可用作数组的基地址,但为啥struct不能这样呢?

  • 数组,函数都如此
  • 当你提到结构时,得到的是整个结构

2.19 程序运行正确,但退出时core dump了,为啥?

注意struct定义的末尾要加分号;

union

2.20 struct与union的区别

  • union本质上是成员相互重叠的struct,可以从一种类型解释,亦可以从另一种类型解释。
  • union的大小,是其最大成员的大小。
  • struct的大小,是其所有成员大小之和。
  • union和struct都有可能有内存对齐。

2.21 有办法初始化union吗

可以初始化union的任意成员

2.22 有没有办法跟踪union的哪个域,在使用?

没有

enum

2.23 enum和一组预处理的#define有啥区别?

  • 区别很小,enum可读性更好

2.24 enum可移植吗

移植性很好

2.25 有什么显示enum符号的容易方法吗?

没有,可以自己写一个函数,把枚举常量值映射到字符串,或者用调试器

2.26 位域: 冒号和数字是什么意思

节省内存空间,用于struct内部

2.27 为什么大家喜欢用显示的掩码和位操作,而不是用位域

因为位域的移植性差

3 表达式

求值顺序

3.1 a[i] = i++是未定义的

3.2 printf("%d\n", i++ * i++);的结果出乎意料

尽量不要在一行里写多个i++之类的值,和人想象的结果可能有差异

3.3 i = i++行为未定义

最好不要这么写

3.4 a ^= b ^= a ^= b行为未定义

尽量不要这么写,在一个表达式中两次修改变量a的值,此行为是未定义的

3.5 不能通过括号强制执行计算顺序

只有部分作用

3.6 &&和||是有短路原则的

即若左边的子表达式即可决定最终结果,则右边的子表达式不会计算
如下是非常常见的正确用法

if (d != 0 && n / d > 0) {
    // sth
}

if (p == NULL || *p == '\0') {
    // sth
}

3.8 函数调用的参数,的求值顺序是不确定的

如下,可能f2()比f1()先执行

printf("%d %d", f1(), f2());

3.9 怎样避免写出“未定义”的表达式

书中的表述有些绕,就是尽量不要写类似a[i] = i++之类的复杂表达式,避免歧义类似

3.11 写简单表达式的原则

  1. 一个表达式最多只修改一个对象
  2. 如果一个对象在一个表达式中出现一次以上,且在表达式中被修改,应确保每次的读操作都读取的是最终值

其他的表达式问题

3.13 i++与++i

  • i++: i+1,返回的是原i值
  • ++i:i+1,返回的是+1后的值

3.15 比较三个数的大小

正确的方式是

if (a < b && b < c) {
}

而不是if(a<b<c),因为这样会比较0<c或1<c

3.16 类型溢出或截短

正确的方式是提前转换,如下是正确的

long int c = (long int) a * b;
// 或
long int c = (long int) a * (long int) b;

4 指针

基本的指针应用

4.1 指针的好处

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【C语言】C语言的495个问题 的相关文章

  • 软件测试|Python中如何提取列表中索引为奇数的元素

    简介 在Python中 我们经常需要从列表中提取特定位置的元素 如果我们想要提取列表中索引为奇数的元素 可以使用一些简单的方法来实现这一目标 本文将介绍如何在Python中提取列表中索引为奇数的元素 并提供示例代码来帮助大家更好地理解这个过
  • 让CHAT介绍下V2ray

    CHAT回复 V2Ray是一个网络工具 主要用于科学上网和保护用户的网络安全 它的名字源自Vmess Ray 光线 通过使用新的网络协议 为用户提供稳定且灵活的代理服务 下面是一些V2Ray的主要特性 1 多协议支持 V2Ray 提供了大量
  • 基于java的学生成绩管理系统设计与实现

    基于java的学生成绩管理系统设计与实现 I 引言 A 研究背景和动机 学生成绩管理系统是一个重要的教育工具 能够帮助学校管理学生的成绩和考试结果 以便更好地评估学生的教育水平和发展潜力 Java是一种广泛应用的编程语言 具有跨平台 高效
  • 电商数据api接口商品评论接口接入代码演示案例

    电商数据API接口商品评论 接口接入入口 提高用户体验 通过获取用户对商品的评论 商家可以了解用户对商品的满意度和需求 从而优化商品和服务 提高用户体验 提升销售业绩 用户在购买商品前通常会查看其他用户的评论 以了解商品的实际效果和质量 商
  • 软件测试|教你如何使用Python绘制出奥运五环旗

    简介 我们之前介绍过使用turtle来绘制正多边形 但是绘制正多边形只是turtle模块最基础的使用 我们可以使用turtle模块绘制出更多不一样的精彩图形 本文就来给大家介绍一个比较简单的turtle绘图实例 绘制奥运五环旗 初始化参数
  • Python自动化测试 | 如何使用Robot Framework进行自动化测试?

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 【卡尔曼滤波】具有梯度流的一类系统的扩散映射卡尔曼滤波器研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 数据 文章
  • 华为OD机试 Java 【计算文件大小】

    题目 一个电脑文件夹系统 每个文件夹里都有一些文件和可能还有其他子文件夹 给定所有文件夹的大小和子文件夹列表 你的任务是找出某一个文件夹及其所有子文件夹里的文件总大小 输入格式 首行有两个数字 文件夹的总数M和你要查询的文件夹ID N 之后
  • 【硕士论文复现】可再生能源发电与电动汽车的协同调度策略研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 1 1 上层问题 1 2 下层问题 2 运行结果
  • 2024诸多大厂春招提前启动!Android的程序员还在等什么

    春招 提前批 已开 xdm别打瞌睡了 格力 顺丰 酷狗 沃尔玛中国 理想 科大讯飞等开启春招 开始收简历了 还有hc的企业提前抢人 春招时间短 节奏快 招满即止 就算挂了也绝不能不投 对企业来说 秋招和春招都是储备人才的黄金时期 春招中 除
  • 史上最全Java面试八股文(带全部答案)2024年最新版

    今天要谈的主题是关于求职 求职是在每个技术人员的生涯中都要经历多次 对于我们大部分人而言 在进入自己心仪的公司之前少不了准备工作 有一份全面细致 面试题 将帮助我们减少许多麻烦 在跳槽季来临之前 特地做这个系列的文章 一方面帮助自己巩固下基
  • 计算机Java项目|基于SpringBoot个人空间平台的设计与实现

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板
  • 详解toLowerCase(判断字符串相等)

    一 toLowerCase 函数简介 toLowerCase 是一个在多个编程语言中都存在的字符串方法 它的作用是将字符串中的所有大写字母转换为对应的小写字母 常用于文本处理 搜索和比较等情况 以确保字符串的一致性和非大小写敏感的操作 二
  • 【一种新的Burton-Miller型奇异边界方法(BM-SBM)】用于声学设计灵敏度分析,2D和3D声学设计灵敏度分析的奇异边界方法研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 2 1 2D 2 2 3D
  • 2024年华为OD机试真题-靠谱的车-Python-OD统一考试(C卷)

    题目描述 程序员小明打了一辆出租车去上班 出于职业敏感 他注意到这辆出租车的计费表有点问题 总是偏大 出租车司机解释说他不喜欢数字4 所以改装了计费表 任何数字位置遇到数字4就直接跳过 其余功能都正常 比如 1 23再多一块钱就变为25 2
  • 2024年华为OD机试真题-分割均衡字符串-Python-OD统一考试(C卷)

    题目描述 均衡串定义 字符串只包含两种字符 且两种字符的个数相同 给定一个均衡字符串 请给出可分割成新的均衡子串的最大个数 约定字符串中只包含大写的 X 和 Y 两种字符 输入描述 均衡串 XXYYXY 字符串的长度 2 10000 给定的
  • 计算机Java项目|有机蔬菜商城

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板
  • 【C#】基础巩固

    最近写代码的时候各种灵感勃发 有了灵感 就该实现了 可是 实现起来有些不流畅 总是有这样 那样的卡壳 总结下来发现了几个问题 1 C 基础内容不是特别牢靠 理解的不到位 导致自己想出来了一些内容 但是无法使用正确的C 代码实现 导致灵感无法
  • 计算机Java项目|人体健康信息管理系统

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板
  • 计算机Java项目|java游戏账号交易系统

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板

随机推荐

  • 关于phpstorm创建新文件和引用的问题

    今天在做一个小demo遇到一个问题 用的是phpstorm 我打算通过后台来访问到json文本文档的数据 但是屡次遇到后台报错 以下是我创建文件的流程和控制台报错的结果 第一步 创建新json数据文件名 第二步 选择要创建的文件类型 此处我
  • 【SQL Server】入门教程-基础篇(完结)

    目录 Sql Server中的触发器使用 触发器概念 触发器语法 触发器练习 Sql Server中存储过程的使用 存储过程概念 存储过程语法 存储过程练习 写在最后 Sql Server中的触发器使用 触发器概念 触发器 trigger
  • Gidon——基于Avalonia的MVVM插件IoC容器

    目录 介绍 用于Avalonia的Gidon IoC MVVM框架 模型 视图 视图模型 MVVM 模式的复习 什么是MVVM 用于MVVM的Avalonia工具 控制反转 IoC 容器 无MVVM 的复习 为什么要同时使用IoC和MVVM
  • 微信小程序 时间处理 bug

    问题 在我的项目中需要处理一个这样的时间 new Date 2020 01 02 10 30 00 在 开发者工具 和 debug 模式下没有问题 但是 在预览模式有问题 经过 尝试 确认了 时间 问题 解决方案 微信 接收类似于 这样的时
  • 智能家居Homekit系列一智能通断开关

    智能通断器 也叫开关模块 可以非常方便地接入家中原有开关 插座 灯具 电器的线路中 通过手机App或者语音即可控制电路通断 轻松实现原有家居设备的智能化改造 随着智能家居概念的普及 越来越多的人想将自己的家改造成智能家庭 但智能电器价格普遍
  • 2023年9月4日-9月10日(上午熟悉公司代码,周一到周五晚上优先工作所急视频教程,其他业余时间进行ue视频教程,为独立游戏做准备,本周15小时,合计2299小时,剩余7701小时)

    按照规划 上午熟悉公司源码 下午进行filament和ue渲染 晚上写工作代码 回家后泛读pbrt或者其他书籍催眠 业余学习ue的各种视频教程 为独立游戏做准备 公司也实行末位淘汰 给自己留条后路 累了就学其他视频教程 随意 可以按照ue
  • 55寸OLED拼接屏的优势是什么?应用在哪些领域?

    OLED拼接屏55寸是一种高端的显示设备 它采用了OLED技术 具有高亮度 高对比度 高色彩饱和度等优点 能够呈现出更加真实 清晰 细腻的图像效果 同时 它还支持多屏拼接 可以将多个屏幕拼接在一起 形成一个更大的显示屏幕 适用于大型展示 广
  • 2012系统里的网页服务器,2012r2云服务器创建网页

    2012r2云服务器创建网页 内容精选 换一换 设置 网络 在下拉列表中选择可用的虚拟私有云 子网 并设置私有IP地址的分配方式 弹性云服务器网络使用虚拟私有云 VPC 提供的网络 包括子网 安全组等 您可以选择使用已有的虚拟私有云网络 或
  • 个人信息管理系统_2020年继续教育个人学时登记以及单位学时登记、审核操作指南来咯...

    近日 自治区人力资源社会保障厅印发 关于做好2020年度全区专业技术人员继续教育工作的通知 桂人社函 2020 157号 规定专业技术人员应于2020年11月30日前完成公需科目必修课学习考试和专业科目学习登记 专业技术人员所在单位应于20
  • 统计数字出现的次数

    在论坛上看到这么一个题 JAVA题 要求任意输入20个10以内的整数 并判断输出每个数字的出现次数并输出 这个题也可以转化为 长度为n n lt 1000 的整数 输出每个数字出现的次数 上面两个题意思相同 每个数字范围只有 0 9 所以我
  • CVPR2022 多目标跟踪(MOT)汇总-补充篇

    为该文章的后续补充https blog csdn net qq 34919792 article details 124343166 七 Multi Object Tracking Meets Moving UAV 作者 Shuai Liu
  • openwrt开启dnsmasq-full替换默认dnsmasq

    因为要用到dnsmasq的ipset功能 所以需要安装dnsmasq full 方法如下 1 进入openwrt目录 配置 make meconfig 在base system里面 2 取消原来的dnsmasq 选中dnsmasq full
  • 【STM32】详解RTC实时时钟的概念和配置&示例代码

    一 什么是RTC RTC Real time Clock 实时时钟 本质上是一个支持BCD编码的定时器 计数器 主电源断电后能够由电池供电 使其时钟跳转依然正常 二 STM32F4芯片内的RTC功能 日历时钟 时分秒 年月日 星期 两个闹钟
  • NBS-Predict:基于脑网络的机器学习预测

    文章来源于微信公众号 茗创科技 欢迎有兴趣的朋友搜索关注 导读 大脑的图模型作为研究跨尺度和跨物种的大脑功能和结构连接的框架具有巨大的潜力 基于网络的统计 NBS 是对大脑图进行统计推断的著名工具 它将基于团簇水平的置换检验和连通分量的图论
  • ST-LINK/V2驱动下载与安装

    1 下载 ST LINKV2仿真器 正点原子资料下载中心 1 0 0 文档 openedv com 点击上面链接到正点原子就可以下载 如下图所示 2 安装 1 将ST LINK连接到电脑 在设备管理器中可以看到是没有通用串行设备 说明电脑没
  • Arthas使用方法

    1 简介 Arthas 是Alibaba开源的Java诊断工具 安装在系统所在服务器 可以帮助开发人员或者运维人员查找问题 分析性能 bug追踪 下载路径 https arthas aliyun com arthas boot jar 2
  • 功能视图的组成

    功能视图是构建联邦学习系统所需功能的技术中立的视图 功能视图描述了支持联邦学习活动所必需功能的分布 定义了功能之间的依赖关系 功能视图涵盖的联邦学习内容如图 包括 功能组件 功能层 跨层功能 功能组件是参与某一活动所需的 能实现的功能构件
  • 与OpenAI的30 天

    30 天 我计划在 GitHub 上测试开源 Ai 项目 并学习如何自己构建一个项目 这些帖子会很短 重点是了解您可以使用 Ai 创造什么以及需要准备什么 图像是使用midjourney生成的 我一直在收集由像你我这样的开发人员创建的 30
  • react-从0到1新建react项目

    目录 1 脚手架创建项目 2 分析目录 3 动态写入值 编辑 4 引入组件 编辑 5 组件传值 6 控制组件传值的类型 类型校验 7 组件插槽 8 函数组件和类组件 9 添加事件 10 引入state 在页面上响应式改变值 编辑 11 子组
  • 【C语言】C语言的495个问题

    文章目录 1 声明和初始化 基本类型 1 1 各类型区别 1 2 为什么不精确定义标准类型的大小 1 3 因为C没有精确定义标准类型大小 那么用typedef定义int16和int32是否能解决问题呢 1 4 新64位机上64位类型是什么样