
C语言
文章平均质量分 76
rickys2080
Just for fun
展开
-
C语言打印菱形字母阵,程序缩短,缩短,再缩短
#include int main(int argc, char *argv[]){ char c1[27], c2[27]; char high = 0, tmp = 0; int i, k; //创建字母表 for(i=0; i<26; i++) { c1[i] = 'a' + i; c2[i] = 'z' - i; } c1[26] = c2[26] =原创 2013-05-22 19:13:43 · 3551 阅读 · 3 评论 -
关于C语言指针的不安全操作
昨天,刚刚请教了刘老师,对C语言指针的不安全操作有了一个更深刻的认识。初学指针的人,往往对char *p="Hello World"式的赋值认为理所当然,最造成的“该内存不能written”式的错误不知所措。其实那是一个指针指向了字符串常量的开始地址,该地址的内容是只读的,自然不能write.指针:首先,我们要知道,char *p是声明了一个指针,但我们并没有要求它原创 2009-12-26 10:19:00 · 2581 阅读 · 2 评论 -
用于ARM上的FFT与IFFT源代码(C语言,不依赖特定平台)
代码在2011年全国电子大赛结束后(2011年9月3日)发布,多个版本,注释详细。/********************************************************************************* 程序名称:快速傅里叶变换(FFT) ** 程序描述:本程序实现快速傅里叶变换 ** 程序作者: ** 最后修改:2011年4月5日 **...原创 2011-08-08 20:36:51 · 20769 阅读 · 41 评论 -
复数乘法中的结构体赋值
#include using namespace std;typedef struct{ double real; double imag;} complex;//复数乘法complex X_complex(complex a, complex b){ complex temp; temp.real = a.real * b.real - a.imag * b.ima原创 2013-06-19 11:34:58 · 1637 阅读 · 0 评论 -
register关键字在c语言和c++中的差异
在c++中:(1)register 关键字无法在全局中定义变量,否则会被提示为不正确的存储类。(2)register 关键字在局部作用域中声明时,可以用 & 操作符取地址,一旦使用了取地址操作符,被定义的变量会强制存放在内存中。在c中:(1)register 关键字可以在全局中定义变量,当对其变量使用 & 操作符时,只是警告“有坏的存储类”。转载 2013-07-12 11:04:08 · 1036 阅读 · 0 评论 -
多项式相乘(C语言)
多项式相乘(C语言)原创 2013-07-14 16:07:15 · 9429 阅读 · 0 评论 -
C调用Cpp代码时的enum类型定义共享问题
C调用Cpp代码时的enum类型定义共享问题原创 2013-07-18 10:01:12 · 1605 阅读 · 0 评论 -
并行调用一个函数时,局部变量无需加锁保护
#include #include int fun(){ int a = 0;//演示同一个函数,并行调用时,局部变量是不同的内存(并行时局部变量相互不干扰) a++; /* ** 加锁等操作,保护的是全局资源(如对设备寄存器的读写等) */ printf("a = %d, addr = %d\n", a, &a); Sleep(1000); fun();}int原创 2013-08-28 17:18:47 · 2586 阅读 · 0 评论 -
printf("%*s",4,"*****"+4);解释
printf("%*s",4,"*****"+4);解释printf("%*s/n",6,"*****"+0); 解释 //收藏baidu一个问题,对自己有点用!1.先从%*s解释起,printf的%后面的格式是: %[flags] [width] [.precision] [{h | l | ll | I | I32 | I64}]type 这些参数的详细用法请参考m转载 2013-05-23 13:50:14 · 1244 阅读 · 0 评论 -
MY_varlist
#include #define va_list void*#define va_end(arg)#define va_arg(arg, type) *(type*)arg; arg = (char*)arg + sizeof(type);#define va_start(arg, start) arg = (va_list)(((char*)&(start)) + sizeof(s原创 2013-05-22 21:23:54 · 991 阅读 · 0 评论 -
fun()参数列表为空,表示可接受任意多个参数,而fun(void)表示无参数
//文件名 test.c 而不是*.cpp #include void fun()//参数列表为空,表示可接受任意多个参数,而fun(void)表示无参数 { printf("hello\n");}int main(int argc, char *argv[]){ fun(1); fun(); return 0;}原创 2013-05-22 14:27:32 · 1717 阅读 · 0 评论 -
快速排序quick_sort
#include #include #define NUM_OF_ARRAY 100void quick_sort(int *array, int left, int right){ int old_left = left; int old_right = right; int standard_data = array[left]; while(le原创 2012-12-27 13:49:46 · 2524 阅读 · 0 评论 -
公历转农历算法(C语言)
#include #include #include unsigned int LunarCalendarDay;unsigned int LunarCalendarTable[199] ={ 0x04AE53,0x0A5748,0x5526BD,0x0D2650,0x0D9544,0x46AAB9,0x056A4D,0x09AD42,0x24AEB6,0x04AE4A,/*1901转载 2013-01-24 19:34:50 · 27142 阅读 · 11 评论 -
农历两百年算法(1901~2100)【C语言代码】
【本程序在DEV C++ 4.9.9.2 下编译通过】有关农历的东西有以下几篇文章: 计算某天是星期几【C代码】 农历算法简介以及公式 农历中天干地支的计算【C代码】 农历一百年算法(1921~2021)【C语言代码】 农历两百年算法(1901~2100)【C语言代码】 下面的三个表格是农历数据表 LunarCalendarT转载 2013-01-24 19:35:22 · 2910 阅读 · 0 评论 -
break while(1)
#include #include using namespace std;int CountBreakWhile(int n, int MilliSecondsOnce)//总次数, 每次多少毫秒,可为0{ static int count = 0;//static if(n<0 || MilliSecondsOnce<0) { return原创 2013-03-28 16:03:17 · 1886 阅读 · 0 评论 -
C/C++语言宏中使用参数做结构体成员
代码:#include #define MAKE(Object, member, value) ( (Object)-> ## member = (value) ) //宏 using namespace std;int main(int argc, char *argv[]){ struct student { int age; int score; };原创 2013-04-26 18:36:20 · 1655 阅读 · 0 评论 -
经典的位运算实例
1) int型变量循环左移k次,即a=a >16-k (设sizeof(int)=16) (2) int型变量a循环右移k次,即a=a>>k |a (3)整数的平均值 对于两个整数x,y,如果用 (x+y)/2 求平均值,会产生溢出,因为 x+y 可能会大于INT_MAX,但是我们知道它们的平均值是肯定不会溢出的,我们用如下算法: int average(int x, int y转载 2013-05-20 11:27:28 · 1532 阅读 · 0 评论 -
自己写strcmp( )函数
网上搜到了一个库函数strcmp( )源代码:int strcmp (const char * src, const char * dst){ int ret = 0 ; while( ! (ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst) ++sr原创 2012-09-06 09:35:31 · 9690 阅读 · 3 评论 -
出错回滚的方法
BOOL GPIO_Set(HANDLE Sam){#if InterruptReadPSAM enum errorType{ERR_GPIOOPEN, ERR_SETMODE, ERR_GETIRQ, ERR_KIOREQUEST, ERR_CREATEEVENT, ERR_ITRINIT, ERR_SUCCESS}; /原创 2013-05-22 21:26:15 · 1613 阅读 · 0 评论 -
C语言字典查找程序,最高效查找
//字典查找#include int A[5] = {0,2,3,5,6};int B[5] = {10,13,15,18,19};char Dic[20] = {0}; // 字典 int InitDic(void){ int i; for(i=0; i<sizeof(Dic)/sizeof(Dic[0]); i++) { Dic[i] = '0原创 2012-12-13 19:07:47 · 10152 阅读 · 0 评论 -
驱动编程注意事项
1. 尽量不用全局变量,它们危害多线程操作2. 应有一个handle(内含一个contex)贯穿驱动的每个函数,包括Init, Open等,为每个操作提供上下文。3. 注意程序结构,要简洁,尤其是ISR函数原创 2013-09-03 11:19:27 · 1185 阅读 · 0 评论 -
C语言中常数的数据类型
//编译环境:codeblocks+gcc#include #include int Fun(){ uint64_t y; uint32_t x1, x2; //y = 3000 * 24000000 / 1000;//常数默认作为32位数据,临时运算结果也是32位,溢出错误 //y = (uint64_t)3000 * (uint64_t)2400000原创 2013-10-09 11:45:49 · 5022 阅读 · 0 评论 -
C 语言资源大全中文版
我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理。awesome-c 是 koz.ross 发起维护的 C 语言资源列表,内容包括了:构建系统、编译器、数据库、加密、初中高的教程/指南、书籍、库等等。Awesome 系列虽然挺全,但基本只对收录的资源做了极为简要的介绍,如果有更详细的中文介绍,对相应开发者的帮助会更大。这也是我们发起这个开源项目的初转载 2016-02-13 15:34:31 · 1614 阅读 · 0 评论 -
2016年,C语言该怎样写
导语:你的C语言知识可能该更新了。每个人在学习C语言之后,知识往往停滞不前,从开始学习它的那年起积攒起不同观点。本文将告诉你现代C语言该怎么写。C语言的首要原则是——能不写C语言就不写。如果一定要写,请遵守现代规则。C语言诞生于20世纪70年代初。人们在其发展的各个阶段都在“学习C语言”,但在学习C语言之后,知识往往停滞不前,从开始学习它的那年起积攒起不同观点。很重要的一点是,用C语言转载 2016-03-28 15:12:41 · 1261 阅读 · 0 评论 -
控制台的扫雷程序(C语言)
// 扫雷程序 C-Free编译通过// by: 瑞 2012-9-20 // 文件名: mine.cpp#include #include #include #include #define OUTPUT_STR(str) printf(str)#define INPUT_STR(str) gets(str)#define CLRSCREEN system("cls")原创 2012-09-21 14:15:01 · 5468 阅读 · 2 评论 -
increase decrease
#include using namespace std;int increase(int src, int range){ return (src + 1) % range;}int decrease(int src, int range){ return (src - 1 + range) % range;}int main(int argc, char *argv[])原创 2018-01-22 19:48:35 · 602 阅读 · 0 评论 -
LOG宏的参数问题
如下定义LOG宏:#include <stdio.h>#define DBG_LOG printfint main(int argc, char *argv[]){ int x = 9; DBG_LOG("x=%d\n", x=(x>5?6:4)); printf("x=%d\n", x); return 0;}想在某模块中取消LOG宏:#inc...原创 2018-07-26 14:35:28 · 408 阅读 · 0 评论 -
C语言函数sscanf()的用法
C语言函数sscanf()的用法sscanf() - 从一个字符串中读进与指定格式相符的数据. 函数原型: int sscanf( string str, string fmt, mixed var1, mixed var2 ... ); int scanf( const char *format [,argument]... ); 说明: sscanf与scanf类似,都...转载 2018-08-03 09:46:31 · 327 阅读 · 0 评论 -
keil MDK log打印编译时间的方法
DBG_LOG("compile time: %s %s\r\n", __DATE__, __TIME__);原创 2018-11-14 17:07:15 · 3985 阅读 · 0 评论 -
应用#符的二级宏定义中整数转字符串
#include <stdio.h>int main(int argc, char *argv[]){ #define RC_PID 123 #define RC_PID_STR_(x) #x #define RC_PID_STR(x) RC_PID_STR_(x) static char rc_pair_str[] = "Num = "RC_PID_STR(RC_P...原创 2019-04-04 15:39:13 · 538 阅读 · 0 评论 -
曾经山寨手机上的跨平台方案
本帖最后由 safe安全003 于 2013-8-4 00:00 编辑一:国产MTK机型(MRP平台)分为斯凯sky--mrp和展讯--mrp两种,都可以运行mrp格式文件,但两种mrp格式软件一般不通用,斯凯和展讯安装方法大致相同,区别只是mrp软件存放的文件夹不同而已。斯凯sky平台mrp格式软件的应用,是大多数国产品牌,杂牌、山寨、高仿手机等所谓的低端转载 2015-09-24 15:14:22 · 4375 阅读 · 0 评论 -
最值得关注的10个C开源项目
开源世界有许多优秀的开源项目,我选取其中十个最优秀的、最轻量级的C语言的项目,希望可以为C语言开发人员提供参考。1. WebbenchWebbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写,转载 2015-09-15 15:31:34 · 977 阅读 · 0 评论 -
优秀程序员不得不知道的20个位运算技巧
一提起位运算,人们往往想到它的高效性,无论是嵌入式编程还是优化系统的核心代码,适当的运用位运算总是一种迷人的手段,或者当您求职的时候,在代码中写入适当的位运算也会让您的程序增加一丝亮点,最初当我读《编程之美》求“1的数目”时,我才开始觉得位运算是如此之美,后来读到 《Hacker's Delight》,感慨到Henry S.Warren把位运算运用的如此神出鬼没,很多程序都十分精妙,我觉得在一转载 2013-11-01 17:13:27 · 1170 阅读 · 0 评论 -
C语言未定义行为一览
本文由 伯乐在线 - cjpan 翻译自 Christopher Cole。欢迎加入技术翻译小组。转载请参见文章末尾处的要求。几周前,我的一位同事带着一个编程问题来到我桌前。最近我们一直在互相考问C语言的知识,所以我微笑着鼓起勇气面对无疑即将到来的地狱。他在白板上写了几行代码,并问这个程序会输出什么?1234转载 2013-12-12 20:27:54 · 1352 阅读 · 0 评论 -
C语言 ## __VA_ARGS__ 宏
在GNU C中,宏可以接受可变数目的参数,就象函数一样,例如: 12#define pr_debug(fmt,arg...) \ printk(KERN_DEBUG fmt, ##arg)用可变参数宏(variadic macros)传递可变参数表 你可能很熟悉在函数中使用可变参数表转载 2014-01-10 09:33:18 · 1237 阅读 · 0 评论 -
任意进制的atoi()
#include #include int main(){ char a[] = "12ae"; char *p = &str[2]; int c; c = strtol(str, &p, 16);//16进制 if(!(*p)) { printf("0x%x, ", c ); } else {原创 2014-02-28 10:07:29 · 1438 阅读 · 0 评论 -
double的精度与范围
float与double的范围和精度1. 范围 float和double的范围是由指数的位数来决定的。 float的指数位有8位,而double的指数位有11位,分布如下: float: 1bit(符号位) 8bits(指数位) 23bits(尾数位) double: 1bit(符号位) 11bits(指数位) 52bits(尾数位) 于是,flo转载 2014-04-10 09:47:25 · 55144 阅读 · 2 评论 -
ARM C 库中的线程安全性
from:http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0349bc/Chdfgjej.html在 ARM 库中,函数可能是线程安全的,如下所示:某些函数从来都不是线程安全的,例如 setlocale()某些函数在本质上就是线程安全的,例如 memcpy()某些函数(例如 mal转载 2014-04-28 17:26:29 · 3198 阅读 · 0 评论 -
C语言中结构体(struct)的初始化
from:struct结构体是C语言中非常重要的复合类型,初始化的方法很多,下面对这些方法进行总结,便于以后查阅。一、gcc扩展方式(不知道该如何命名) [cpp] view plaincopy#include struct mych { int k; }; stru转载 2014-07-01 09:39:12 · 10577 阅读 · 0 评论 -
DFT(离散傅里叶变换)
/********************************************************************************* 程序名称:离散傅里叶变换(DFT )** 程序描述:本程序对指定的离散序列进行离散傅里叶变换** 程序作者:宋元瑞 ** 最后修改:2011年4月1日 ************************************原创 2011-04-01 16:46:00 · 12627 阅读 · 8 评论