原函数是<The C programint  language >5.11文本行排序的程序,如下: void qsort(void *v[], int left, int right, int (*comp)(void *,void *)) { int i,last; if( left >= right) return; swap(v,left,(left+right)/2); last = left; for(i = left + 1; i <= right; ++i) if(c…
  理解 #define write(b,addr) (void)((*(volatile unsigned int *) (addr)) = (b)) 嵌入式系统编程,要求程序员能够利用C语言访问固定的内存地址. 既然是个地址,那么按照C语言的语法规则,这个表示地址的量应该是指针类型. 所以,知道要访问的内存地址后,比如0x57000040(这儿的addr就是内存地址0x57000040) 第一步,把它强制转换为指针类型: (unsigned int*)(0x57000040);//0x570…
1.typedef  int (init_fnc_t) (void);表示定义init_fnc_t为函数类型,该函数返回int型,无参数.而“init_fnc_t  *init_sequence[]={ cpu_init,  board_init }”表示用init_fnc_t(函数类型)去定义一个一维指针数组,数组中的元素都是指针变量,而且都是指向函数的指针,这些函数返回值都是int型,无参数的.更明朗的说就是数组中的每个元素是用来存放函数入口首地址的. 2.int (*init_fnc_t)…
最近写代码,遇到很多地方需要判断文件是否存在的.网上的方法也是千奇百怪,“百家争鸣”. fopen方式打开的比较多见,也有其他各种方式判断文件是否存在的,由于其他方法与本文无关,所以不打算提及. 笔者近来使用winapi比较多,于是顺便搜索了msdn,找到了一个函数:PathFileExists BOOL PathFileExists( _In_ LPCTSTR pszPath ); 以下是笔者最初的方法,windows api原则上提供的函数应该是最合理高效的,起码这个方法在windows平台…
当我们想把一个字符串转换成整型int的时候,我们可能会想到如下三种方式:int.Parse,Convert.ToInt32和int.TryParse.到底使用哪种方式呢? 先来考虑string的可能性,大致有三种可能:1.为null2.不是整型,比如是字符串3.超出整型的范围 基于string的三种可能性,分别尝试. □ 使用int.Parse string str = null; int result; result = int.Parse(str); 以上,抛出ArgumentNullExc…
(  (  (int(*)(uint, ushort, uint *, uint, int))  (*((uint *)(TCM_BASE + 0x8)))  ) (a,b,c,d,e)  ) 首先红色字部分:(*((uint *)(TCM_BASE + 0x8))),((uint *)(TCM_BASE + 0x8))将TCM_BASE + 0x8转化为指针,前面的*表示取出存于TCM_BASE + 0x8这个地址的一个32位数据:其次蓝色字部分:(int(*)(uint, ushort, u…
#include "stdafx.h" #include <string> #include <sstream> using namespace std; void main() {     // int 转 string     stringstream ss;     int n = 123;     string str;     ss<<n;     ss>>str;     // string 转 int     str = &…
不废话直接代码示例: void f(const int *p) { ; *p = ; // error p = &b; // fine } void f(int* const p) { ; *p = ; // fine p = &b; // error } void f(const int* const p) { ; *p = ; // error p = &b; // error } 然而,如果function f使用了const作为承诺(不修改p或者不修改p指向的区域或者二者都…
c++ 最近标准添加了stringstream类,可以非常简单的对int 和 string 进行相互的转化 //int 转 string void int2str(const int& i, string& src) { stringstream stream; stream << i; src = stream.str(); } //string 转 int void str2int(const string& s, int& number) { std::s…
int main(int argc,char *argv[])与int main(int argc,char **argv)区别? 这两种是一个等价的写法 而int main(int argc,char *argv)这种写法是一种错误的写法 argc: 整数,用来统计你运行程序时送给的命令行参数的个数 * argv: 字符串,用来存放指向你的字符串参数的,每一个元素指向一个参数 argv[0] 指向程序运行的全路径名 argv[1] 指向在DOS命令行中执行程序名后的第一个字符串 argv[2]…