C 语言的头文件是必须的吗?

  N年前学习C语言开始,就被老师教导,要记得包含头文件。自己也养成了二话不说就#include的习惯。从来没有静下信来想想,C语言必需要有头文件吗?头文件到底起到什么的作用。  最近一段时间做了一些静态库和动态库相关的东西,一些内容在上一篇博文中...

#
DoNet
分享:

C编译: 使用gdb调试

  gdb是the GNU Debugger的简称。它是一款UNIX平台的调试器(debugger),可用于为C, C++, Objective-C, Java, Fortran等程序debug。  在gdb中,你可以通过设置断点(break point)来控制程序运行的进度,并查看断点时的变量和函数调用状况,从而发现可能的...

#
DoNet
分享:

有趣的问题:C 的表达式 x == x,何时为假?!

  今天的问题很有趣,C的表达式 x == x,何时为假呢?即下面的代码:  if (x == x) {  printf("Equaln");  }  else {  printf("Not equaln");  }  什么时候输出为”Not equal”呢?看上去很有趣吧。x与自己比较,怎么会不等呢?请大家想一...

#
DoNet
分享:

一次离奇的 MySQL 死锁分析(图)

  1、故事起因于2016年11月15日的一个生产bug。业务场景是:归档一个表里边的数据到历史表里边,同是删除主表记录。  2、背景场景简化如下(数据库引擎InnoDb,数据隔离级别RR[REPEATABLE])-- 创建表test1CREATE TABLE test1 (id int(11) NOT NULL AU...

#
DoNet
分享:

C++ 泛型编程基础:模板通识(图)

  测试环境:Target: x86_64-linux-gnu  gcc version 5.3.1 20160413 (Ubuntu 5.3.1-14ubuntu2.1)  什么是泛型编程?为什么C++会有模板?这一切的一切都要从如何编写一个通用的加法函数说起。  很久很久以前  有一个人要编写一个通用的加法函数,...

#
DoNet
分享:

C#在MySQL海量数据下的高效读取、写入

  前提  由于工作的原因,经常需要对海量数据进行处理,做的数据爬虫相关,动辄千万级别的数据,单表几十个G都是都是家常便饭。  主要开发语言是C#,数据库使用的是MySQL。  最常见的操作便是 select 读取数据,然后在C#中对数据进行处理, 完毕...

#
DoNet
分享:

C++哈夫曼树编码和译码的实现(图)

  一.背景介绍:  给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。  二.实现步骤:  1.构造一棵哈...

#
DoNet
分享:

没学过 C 语言的代价

  C语言确实显得有些老旧。最近一版权威性的C语言还是1988年发布的;在接近30年的时间里,这个语言的作者一直都没有对它进行过更新,可见它有多过时了。现在,一说到必须有所了解的编程语言,大家都会想到Rust、Go或是Clojure,却很少有人会想到C语言。 ...

#
DoNet
分享:

C# 多态又一示例

  第一个示例,很简单,大多数人都会答对,熟悉的人可以跳过这个示例。public class B{private const string P = "千一网络";public virtual string F1(){return P;}public string F2(){return P;}}public class D : B{private const string P = "www.cf...

#
DoNet
分享:

C语言之GCC中支持的内存对齐指令

  1:gcc中支持但不推荐使用的指令#pragma pack() :取消内存对齐访问#pragma pack(n) (n=1/2/4/8):按n字节对齐#pragma pack(2)struct mystruct1{int a;char b;short c;}struct mystruct2{int a;;double b;short c;}#pragma pack()  以上这部分内容就...

#
DoNet
分享:

C语言中动态数组的建立(图)

  一维动态数组的创建,这个比较简单,直接上代码1 #define _CRT_SECURE_NO_DEPRECATE2 #include<stdio.h>3 #include<stdlib.h>4 void createOneDimensionalVector(){5     int n, i;6     int *arr;7     sc...

#
DoNet
分享:

C语言隐式类型转换的一个小坑(图)

  这个问题大致是这样的,本来试图写一个产生低8位为1的掩码的语句: uint32_t mask = ~((uint8_t)0); ,结果发现算出的掩码是 0xffffffff 显然不符合预期,于是折腾检查了一番,写出对比程序如下:#include <stdint.h>#include <iostream>u...

#
DoNet
分享:

QT中使用C++的指针

  之前没有接触过 c++,不过听说 c++ 的指针很坑,直到最近在用 QT / C++ 写一个 Linux Deepin 系统上检测网络流量和网速的小程序时,发现 c++ 的指针用起来真的特别蛋疼。  不过好在花了几个小时最终还是明白了指针的用法。  有一段代码的原型大概是...

#
DoNet
分享:

C 语言声明与定义不一致导致的问题

  最近项目代码需要从mips平台移植到x86平台,这是公司产品第一次采用x86平台。之前项目很紧,所以很多代码都没有考虑移植性问题,因此移植的时候遇到了不少问题。前几天才解决了位序(也叫比特序,与字节序不同)问题,今天又遇到了一个比较隐蔽的C语言...

#
DoNet
分享:

C++“隐藏实现,开放接口”的实现方案(图)

  为什么要有接口?  接口就是一个程序与其它程序交流的窗口。就比如有一个电视机,我并不需要知道它是怎样工作的,我只要知道按电源键就可以开启电视,按节目加(+)减(-)可以切换电视频道就可以了。  Java程序员都知道Java中有interface可以实现对外...

#
DoNet
分享:

C++中struct和class的区别

  一、C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能。  struct能包含成员函数吗?   能!  struct能继承吗?          能!!  struct能实现多...

#
DoNet
分享:

在C语言中*p++与(*p)++的区别

  首先*p++等价于*(p++)。至于为什么会等价呢?根据c语言的优先级。*与++的优先级同处在第二级别上。他们的优先级是一样的,又因为处在第二级别的优先级运算符是结合方向是从右到左,所以当出现*p++这样的表达式的时候,根据优先级别相同,并且结合方向是...

#
DoNet
分享:

C++ 头文件的包含顺序研究

  一.《Google C++ 编程风格指南》里的观点  公司在推行编码规范,领导提议基本上使用《Google C++ 编程风格指南》。其中《Google C++ 编程风格指南》对于头文件的包含顺序是这样的:  Names and Order of Includes  link ▽Use standard order f...

#
DoNet
分享:

从 .NET 和 Java 之争谈 IT 行业

  一、有些事情难以回头  开篇我先表明自己的立场:同时使用 .Net 和 JAVA,但更加偏爱.Net。原因很简单:  1、.Net语言更具开放性,从开源协议和规范可以看出;  2、语言更具优势严谨;  3、开发工具 VS 更具生产力;  然而  1、Java,C# 的职...

#
java
分享:

怎样用C语言编写病毒?

  在分析病毒机理的基础上,用C语言写了一个小病毒作为实例,用TURBOC2.0实现.  [Abstract] This paper introduce the charateristic of the computer virus,then show a simple example written by TURBOC2.0.  一、什么是病毒  恶意软件可能是第一...

#
DoNet
分享:
分享到朋友圈
打开微信,点击底部的“发现”,
使用“扫一扫”即可将网页分享至朋友圈。

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2023
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号