隔三差五学习一下,做做题
这道题难度等级是简单,昨晚这题让我想了很久,改来改去的,昨天看视频,老师说,写程序,老是靠改来改去才运行成功的,就说明思路不好不清晰,今早上又花了个多小时编写的程序才算是过关了
再看看题解,别人的就一个循环几行代码就解决问题,而我的却要那么多行。
真是让人感叹c语言的算法精妙。有些问题很复杂,短短几行代码就能搞定,一般人就算是抓破脑袋,思考一辈子估计都想不出来,估计第一个想出来的人智商估计能爆表。
2025年06月03日
隔三差五学习一下,做做题
这道题难度等级是简单,昨晚这题让我想了很久,改来改去的,昨天看视频,老师说,写程序,老是靠改来改去才运行成功的,就说明思路不好不清晰,今早上又花了个多小时编写的程序才算是过关了
再看看题解,别人的就一个循环几行代码就解决问题,而我的却要那么多行。
真是让人感叹c语言的算法精妙。有些问题很复杂,短短几行代码就能搞定,一般人就算是抓破脑袋,思考一辈子估计都想不出来,估计第一个想出来的人智商估计能爆表。
2025年06月03日
C是编译型语言。如果之前使用过编译型语言(如,Pascal或FORTRAN),就会很熟悉组建C程序的几个基本步骤。但是,如果以前使用的是解释型语言(如,BASIC)或面向图形界面语言(如,Visual Basic),或者甚至没接触过任何编程语言,就有必要学习如何编译。别担心,这并不复杂。首先,为了让读者对编程有大概的了解,我们把编写C程序的过程分解成7个步骤(见图1.3)。注意,这是理想状态。在实际的使用过程中,尤其是在较大型的项目中,可能要做一些重复的工作,根据下一个步骤的情况来调整或改进上一个步骤。
2025年06月03日
C语言main函数是程序的入口函数,也就是程序执行的起点。C语言规定main函数的参数只能有两个,习惯上这两个参数写为argc和argv。因此,main函数的函数头可写为:
int main(int argc, char *argv[])
其中,int表示main函数的返回值类型,一般返回0表示程序正常结束,返回非0表示程序异常退出。
2025年06月03日
[VS是目前最受欢迎的适用于Windows平台应用程序的综合开发环境,由于大多数同学使用的都是Windows操作系统,因此VS非常适合大家。在日常课堂和考试中,我们使用的VS2010支持多种不同的编程语言,VS2010最初支持的语言包括:Visual Basic、Visual C#、Visual C++、Visual F#等四种编程语言。
2025年06月03日
volatile关键字用于告诉编译器,该变量可能会被其他线程或外部设备修改,因此需要每次都从内存中读取该变量的值。它可以保证程序在多线程环境下正确地访问共享变量,避免出现数据竞争等问题。
应用场景:
1. 多线程编程:当多个线程同时访问同一个变量时,如果不使用volatile关键字,可能会出现数据竞争的问题,导致程序崩溃或者结果不正确。使用volatile关键字可以保证每个线程都能正确地读取变量的值。
2025年06月03日
在C语言中,*号是指针类型的标识符,主要有三个作用:声明指针变量、取出指针对应的值、修改指针对应的值。下面通过代码来说明其作用:
1. 声明指针变量
可以通过在变量名前面加上*来声明指针变量。
```c
int *p = NULL; // 声明一个int类型的指针变量
char *str; // 声明一个char类型的指针变量
```
2. 取出指针对应的值
通过*号可以取出指针变量对应的值,需要注意的是,只有正确赋值的指针才能访问内存地址,否则会出现访问错误。
```c
int num = 10;
int *p = #
printf("%d\n", *p); // 输出10
```
3. 修改指针对应的值
通过指针变量和*号,可以修改指针对应的值。
```c
int num = 10;
int *p = #
*p = 20;
printf("%d\n", *p); // 输出20
```
指针的作用在于增加了程序的灵活性,可以方便地对变量进行内存操作,同时也带来了一定的风险。指针的使用需要谨慎,防止出现访问非法内存地址的问题。
2025年06月03日
&符号在C语言中主要有两种用途:
1. 取地址符号:&符号可以获取变量在内存中的地址,也就是所谓的“取地址符号”。
例如:
```c
int a = 10;
printf("a变量在内存中的地址是:%p\n", &a);
```
输出:
```
a变量在内存中的地址是:0x7fff5fbff590
```
这里的%p是用于输出地址的格式控制符,输出的地址会以十六进制的形式显示。
2. 取值符号:&符号也可以用于取结构体、共用体或数组等复合数据类型中的某个成员的地址。
例如:
```c
struct Student {
char name[20];
int age;
};
struct Student stu;
strcpy(stu.name, "小明");
stu.age = 18;
printf("stu结构体中name成员的地址:%p\n", &stu.name);
printf("stu结构体中age成员的地址:%p\n", &stu.age);
```
输出:
```
stu结构体中name成员的地址:0x7fff5fbff580
stu结构体中age成员的地址:0x7fff5fbff590
```
这里&符号用于取得结构体中某个成员的地址。通过%p将地址以十六进制的形式输出。
2025年06月03日
以下文章来源于GoUpUp ,作者dj
在 Go 语言中编写数据库操作代码真的非常痛苦!database/sql标准库提供的都是比较底层的接口。我们需要编写大量重复的代码。大量的模板代码不仅写起来烦,而且还容易出错。有时候字段类型修改了一下,可能就需要改动很多地方;添加了一个新字段,之前使用select *查询语句的地方都要修改。如果有些地方有遗漏,可能就会造成运行时panic。即使使用 ORM 库,这些问题也不能完全解决!这时候,sqlc来了!sqlc可以根据我们编写的 SQL 语句生成类型安全的、地道的 Go 接口代码,我们要做的只是调用这些方法。
2025年06月03日
堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。
对于堆的操作通常需要以下3个步骤: