流感传染 描述 有一批易感人群住在网格状的宿舍区内,宿舍区为n*n的矩阵,每个格点为一个房间,房间里可能住人,也可能空着。在第一天,有些房间里的人得了流感,以后每天,得流感的人会使其邻居传染上流感,(已经得病的不变),空房间不会传染。请输出第m天得流感的人数。 输入 第一行一个数字n,n不超过100,表示有n*n的宿舍房间。 接下来的n行,每行n个字符,’.’表示第一天该房间住着健康的人,’#’表示该房间空着,’@’表示第一天该房间住着得流感的人。 接下来的一行是一个整数m,m不超过100. 输出 输出第m天,得流…

2020年4月29日 0条评论 78点热度 阅读全文

C语言中的指针是一个难点,主要是感觉很绕,其实C/C++中的指针和Delphi的指针的原理都是一样的,所以这里讲的一个C/C++的例子也适用于Delphi 源码如下 int i, j; int *pi, *pj; i=10; j=9; pi=&i; //相当于将指针 pi 指向 i 的地址 //比较下面两个语句 pi=&j; //这时候是将指针 pi 指向 j 的地址,并不会对i有什么影响 *pi = j; //在这是将 j 的值赋值给 pi 所指向的那个变量,所以就相当于 i = j; 所以这两个…

2020年4月24日 0条评论 69点热度 阅读全文

腾讯Bugly特约作者: 姚潮生 常见原因 1.集合类 集合类如果仅仅有添加元素的方法,而没有相应的删除机制,导致内存被占用。如果这个集合类是全局性的变量 (比如类中的静态属性,全局性的 map 等即有静态引用或 final 一直指向它),那么没有相应的删除机制,很可能导致集合所占用的内存只增不减。 2.单例模式 不正确使用单例模式是引起内存泄露的一个常见问题,单例对象在被初始化后将在 JVM 的整个生命周期中存在(以静态变量的方式),如果单例对象持有外部对象的引用,那么这个外部对象将不能被 JVM 正常回收,导致…

2020年3月25日 0条评论 84点热度 阅读全文

普通的野指针 在C/C++中进行内存分配之后,如果在使用过之后释放了内存,一定要注意将指针置为NULL,否则指针将变成野指针。 示例代码如下 char *p = (char *)malloc(sizeof(char)); //exe task free(p);//若不释放指针p所指内存空间,则会造成内存泄漏。 p = NULL;//若不置指针p为NULL,则可能会被误以为是合法的,就会成为野指针。 //如果后续无意中引用了p就可能会造成错误 ...... // do something else 因为在通过 fre…

2020年3月22日 0条评论 78点热度 阅读全文

本文将演示如何在一个 ESP-12F 模块上实现webserver,并且可以通过web请求对与模块连接的继电器进行控制。 0.写在前面 首先,假设本文的读者了解C语言、逻辑电路和HTTP协议。再次,本文适合物联网开发者和有意向涉及物联网项目的web开发者、移动开发者阅读 。最后,如果你只需要了解实现过程,你可以继续往下看,如果你想亲自体验这神奇的过程,除了常用的一些装备和动手能力以外你还要需要准备以下材料。 ESP-12F 是基于 Espressif ESP8266芯片开发的WIFI控制模块,支持802.11 b/…

2020年3月5日 0条评论 81点热度 阅读全文

首先说明,函数的传值调用和传址调用在C和C++中都是合法的语法,但是引用调用就只是在C++中合法的。 传值调用 首先给一个广为人知的例子 #include<stdio.h> void swap(int x, int y) { int tmp = x; x = y; y = tmp; } int main(void) { int a = 1, b = 2; printf("a=%d, b=%d\n", a, b); swap(a, b); printf("a=%d, b=%d\n", a, b); ret…

2020年3月4日 0条评论 74点热度 阅读全文

最近在segmentfault上看到一个提问《c++隐式的类类型转换问题》:一时不知怎么回答,查阅相关资料后整理了本文,以供参考学习。 定义 早期的C给出的定义:左值是一个表达式,可能出现在赋值操作的左边或右边,但右值只能出现在右边。比如: a * b = 42; // 编译错误, 说明 a * b 不是左值 因为上面的定义实在太模糊,导致左值和右值很难被理解,下面给出的定义,更简单更好理解:左值(lvalue)是一个表达式,它表示一个可被标识的(变量或对象的)内存位置,并且允许使用&操作符来获取这块内存的…

2020年2月24日 0条评论 82点热度 阅读全文

“C语言简单记”基于我以前学习过程中做过的笔记、随笔,特意整理了一下,只是简单的记录了一些比较重要的知识点,不会去深入探究,面向的是一些有语言基础的人查找阅读,还请见谅,谢谢~~~ 标识符命名规范 1.只能由字母、数字、下划线_组成 2.严格区分大小写 3.不能以数字开头 4.不可以使用关键字作为标识符 注释 1.单行注释 // 进行单行注释 使用范围:任何地方都可以写注释:函数外面、里面,每一条语句后面 作用范围: 从第二个斜线到这一行末尾 快捷键:Command+/ 2.多行注释 /* */ 进行多行注释 使用…

2020年1月13日 0条评论 99点热度 阅读全文

GNU Make简介 大型项目的开发过程中,往往会划分出若干个功能模块,这样可以保证软件的易维护性。 作为项目的组成部分,各个模块不可避免的存在各种联系,如果其中某个模块发生改动,那么其他的模块需要相应的更新。如果通过手动去完成这个工作的话,对于小型的项目可能还行,但是对于比较大型的项目就几乎是不可能的。 因此Linux 系统提供了一个自动维护和生成目标程序的工具 make,它可以根据各个模块的更改情况去重新编译连接目标代码。 Make 工具的作用就是实现编译连接过程的自动化。它定义了一种语言,用来描述源文件、目标…

2019年12月30日 0条评论 65点热度 阅读全文

简介 GCC 的意思也只是 GNU C Compiler 而已。经过了这么多年的发展,GCC 已经不仅仅能支持 C 语言;它现在还支持 Ada 语言、C++ 语言、Java 语言、Objective C 语言、Pascal 语言、COBOL语言,以及支持函数式编程和逻辑编程的 Mercury 语言,等等。而 GCC 也不再单只是 GNU C 语言编译器的意思了,而是变成了 GNU Compiler Collection 也即是 GNU 编译器家族的意思了。另一方面,说到 GCC 对于操作系统平台及硬件平台支持,概括…

2019年12月30日 0条评论 84点热度 阅读全文