c语言知识
文章平均质量分 64
布衣僧
助人如助己,还人心愿,如还自己心愿。
展开
-
C语言的执行过程
对于C语言的执行过程大家都是知道的,1、编辑 2、编译3、链接 4、执行。不过存在一些问题,总结如下:在编译的过程的时候,主要是对语法、词法的检测,代码优化,分配全局变量、静态变量内存等操作。还有就是会检测函数是否定义,如果没有定义,则检测是否声明。如果没有定义,也声明就会抱错。在链接的过程中,主要是:解析其他文件中的函数引用或其他引用; 解析库函数。原创 2015-08-10 17:01:18 · 1065 阅读 · 0 评论 -
c总结7 --- 在字符串键值对中提取Value(指针学习6)
在c语言中const问题,前面提到过,做为总结,我还是在说下;1. 指针变量和它所指向的内存空间变量,是两个不同的概念. 2. 看const 是放在*的左边还是右边 看const是修饰指针变量,还是修饰所指向的内存空变量下面的代码简单的介绍了 const存在的三种情况,代码如下:#include #include #include //指针原创 2015-10-19 10:35:16 · 770 阅读 · 0 评论 -
c总结6 --- 在字符串键值对中提取Value(指针学习5)
我们在开发的时候,还有可能会在一段含有键值对中的字符串中进行查找键对应得值,比如:姓名=张三 等等。这样我们就需要借助今天的总结进行操作。 我们需要判断要查找的键是否存在,只有存在的情况下,后面的操作才有意义。 找到键后要 = 字符 然后就可以获取到,我们需要的键值了 备注:考虑到要操作的字符串的含有空白字符的情况,所以我们需要借助上篇总结。原创 2015-10-19 10:31:24 · 1209 阅读 · 0 评论 -
c总结2 ---自己实现字符串的拷贝(指针学习1)
我们在使用c的时候,如果要实现字符串的拷贝,可能会用到strcpy函数。那么我们能否自己实现一下呢?我们借助指针来实现该函数#include "stdafx.h"#include #include void myCopy(char *from, char* to){ //当*from为 '\0'的时候结束 每次执行语句后 *from *to自增 将指针加1 for (原创 2015-10-17 14:09:54 · 919 阅读 · 0 评论 -
c总结3 --- C语言中的strstr函数(指针学习2)
当自己在学习这个函数的时候很纠结,现在将自己总结的整理如下:strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。int main(void){ char *str1 = "Borland International", *str2 = "nation", *ptr; ptr原创 2015-10-17 15:16:38 · 875 阅读 · 0 评论 -
动态链接库(DLL)总结---静态链接库的创建与使用(4)
静态库(static library)将函数和数据编译进入到一个二进制文件(.lib)中,当链接的时候,会将函数和数据复制到可执行文件中去。发布的时候,不需要该lib文件。1、使用vs2013建立一个静态库的工程,StaticDllDemo新建一个 win32项目,名称定义为 StaticDllDemo,在下一步中选择 “静态库”,然后点击完成即可。我们查看该项目属性,会发现在 “原创 2015-10-31 19:03:50 · 511 阅读 · 0 评论 -
动态链接库(DLL)总结---简单使用(1)
DLL(Dynamic Link Library)文件为动态链接库文件,又称“应用程序拓展”,是软件文件类型。我们在使用Window API开的时候, 其中有3个最重要的DLL。Kernel32.dll 用于管理内存、进程和线程函数。例如:CreateThread函数User32.dll 用于执行用户界面任务的函数。例如:CreateWindow函数GDI原创 2015-10-31 15:23:45 · 934 阅读 · 0 评论 -
动态链接库(DLL)总结---动态链接库的创建与使用(5)
我们将 动态链接库(DLL)总结---静态链接库的创建与使用(4)中的工程修改下属性即可,如下图: 编写代码。 编辑Lib1.h文件 **extern "C" __declspec(dllexport) void Msg();** Lib1.cpp文件内容不变,然后重新生成即可。调用Dll1)隐式链接将生成的lib文件和dll文件拷贝到要测试项目目录下。测试代码如下:原创 2015-11-30 19:40:05 · 569 阅读 · 0 评论 -
动态链接库(DLL)总结---解决名称粉碎问题(3)
名称粉碎:C++是支持函数重载,对于多个函数来说,其函数的名称是一样的,为了加以区分,在编译链接时,c++会按照自己的规则篡改函数的名称。这一过程成为“名称粉碎”,也有的称为“名称改编”。不同的编辑器会采用不同的编辑器进行改编。我们使用LoadPE工具查看动态链接库(DLL)总结---简单使用(1)中生成的dll,查看下名称粉碎是个什么效果。操作步骤如下:1)加载要查看的dll原创 2015-10-31 16:38:47 · 1383 阅读 · 1 评论 -
c总结5 --- 去除两边空格(空白字符)(指针学习4)
在输入或输出字符串的时候,我们需要对现有的字符串进行简单的处理,比如去除字符串两的空格(空白字符),我们定义两个下标,分别代表开始下标和最后下标(\0前位置,不是\0),不断的循环 前面的下标自加,后面的下标自减,直到遇到非空白字符终止。此时,我们就可以知道两个关键要素:1、有效字符的长度;2、有效字符的首地址我们可以计算出来有效字符是多少, 比如前面的下标为2, 后面的下标为4 此原创 2015-10-19 10:24:56 · 1542 阅读 · 0 评论 -
c总结8 --- 二级指针使用三种模型之一(二级指针1)
对于二级指针,常常会把自己绕晕了。二级指针,可以简单的理解为,就是一个二维数组。现在总结下二级指针的模型形式1、第一种模型 char buf[10][30]= { "eeee", "ffff", "aas", "111","cccc" };2、第二种模型 char *arr[] = {"dfe","sss","abc","eee"};3、第三种模型 char **pArr原创 2015-10-22 08:50:47 · 690 阅读 · 0 评论 -
c语言 实现字符串和数字的连接
今天在使用MessageBoxA(0, msg, title, 0)的时候, 想在msg的位置 输出提示:"最大的长度为:20" 而20是一个变量。由于之前用过java,变想当然的使用 MessageBoxA(0, "最大的长度为:"+20 , title, 0); 结果输出的是空白, 接着心中变想说:学C真TMD的苦。可苦归苦,但是事情还得需要继续,所以就度娘,找了一会备受打原创 2015-08-02 21:11:24 · 10356 阅读 · 0 评论 -
编程中的数学问题
1、计算数字的个数 ----- 使用除法---除10例如:要计算数字1234的个数int nNum = 1234;//用于记录数字的个数int nSum = 0; //循环遍历 直到当nNum为0的时候终止循环while(nNum){ nNum = nNum / 10; //或者简写为 nNum/=10; i++;} 2、不断的获取数原创 2015-09-08 18:07:01 · 928 阅读 · 0 评论 -
c总结10--- 二级指针使用三种模型之三(二级指针3)
第三种模型说起来较前两者有一定的复杂,先上代码后上图。/************************************************************************//* 第三种模型 1、先定义一个动态空间,大小为行数 2、再创建新的数组 并挂载在1中数组的每一个位置/***************************************原创 2015-10-22 09:18:29 · 520 阅读 · 0 评论 -
字符数字转换 atoi 与 strtol
对应关系其中 atoi (把字符串转到整形) ----对应---- strtol (把字符串转到长整形) atol (把字符串转到长整形) ----对应---- strtol (把字符串转到长整形) atof (把字符串转到浮点数) ---原创 2015-10-08 16:47:20 · 409 阅读 · 0 评论 -
c总结11 -- 多字节与宽字节间的转换(wchar_t与char转换)
在学习的时候,宽字节和多字节直接的转换经常会用到,还会用到CString\ LPWSTR\TCHAR CHAR\LPSTR,所以就自己写了一个类。方便自己使用。 MyChar.h文件/************************************************************************//* wchar_t与char类型间的转换/* C原创 2015-11-11 10:47:40 · 1429 阅读 · 0 评论 -
关于c语言代码的规范(后期会更新)
我们在学习任何一种语言的时候,书籍都会告诉我们如何的书写、定义是合法的。但现实项目中,仅仅使用合法的定义还是不够的,所以我们需要有一定的规范。由于刚刚学习c语言,也不是很懂,所以也问问了度娘。把自己查阅到的总结一下,供大家参考。(后期会更新)v1:1.1.关于排版 缩进的时候,建议使用4个空格键。 很多人在编程的时候,都习惯性的使用tab键,进原创 2015-08-09 18:07:32 · 980 阅读 · 0 评论 -
c总结4 --- 字符串逆序(指针学习3)
学完了查找之后,我们来学习下字符串的逆序,因为在很多的时候我们都需要使用这样的功能。比如我们现在又一个字符串 “abcdef”,要想实现逆序,其实就是将a和f、 b和e、c和d的位置进行调换即可,我们可以借助两个指针,分别指向a和f所在的位置,然后让他们交换,知道前面的指针比后面的指针位置还小的时候结束。直接上代码/****************************原创 2015-10-19 10:15:20 · 844 阅读 · 0 评论 -
c总结1 ---c中给变量赋值
c语言中给变量赋值一共有两种方式:直接赋值和间接赋值。1、直接赋值:就是将数值直接赋给变量 比较简单如下: 例如: int main() { int a; //声明一个变量 a = 100; //给变量a进行赋值 ---此时就是直接赋值 printf("a = %d \n", a); // a = 100 return 0;原创 2015-10-16 21:34:23 · 5128 阅读 · 0 评论 -
c总结9--- 二级指针使用三种模型之二(二级指针2)
我们来学习下,第二种模型, char *arr[] = {"dfe","sss","abc","eee"}; 上代码:int main(){ int i = 0, j = 0; char * tmp = NULL; //临时变量 用于参与排序使用 ① //二级指针的第一种模型 //首先是一个数组 ----指针数组---数组中的每一个元素是指针 []的优先级比较高原创 2015-10-22 08:57:03 · 453 阅读 · 0 评论 -
动态链接库(DLL)总结---简单使用(2)
接着《动态链接库(DLL)总结---简单使用(1)》我们来完善dll项目。为什么说是要完善DLL项目呢?在实际开发中,一个DLL实现后,通常会交给客户程序,以便后者能够调用。客户程序需要知道DLL导出了那些函数和函数原型,有人说我们在上篇文章是知道的啊,之所以知道是因为程序都是我们自己写的。如果我们自己使用别人编写的dll呢?那么我们可以使用一些工具来知道导出了那些函数和函数的原型,但是这样就不是原创 2015-11-30 19:29:40 · 856 阅读 · 0 评论