
c语言学习
nullcanon
健忘症患者的云端笔记
展开
-
fatal error LNK1561: 必须定义入口点
错误记录: 编译通过,运行时出现链接错误: fatal error LNK1561: 必须定义入口点找了半个多小时,终于找到了int mian(){ test(); return 0;}以上是摘的错误代码,是的 ,main 被我写成了 mian,坑爹啊,坑爹啊有木有原创 2017-09-19 17:43:33 · 1815 阅读 · 2 评论 -
0xC0000005: 写入位置 0x00000000 时发生访问冲突
错误代码#include<stdlib.h>typedef struct{ int *a;}HH;void test(HH *p){ p->a = (int*)malloc(1024);}int main(){ HH *p = NULL; test(p); return 0;}我本意是想创建一个结构体,将它以指针的形式传递给函数 在调试代码时第十原创 2017-09-20 11:56:39 · 9608 阅读 · 0 评论 -
【c语言小项目】简单计算器
应用栈实现表达式求值,具体思路如下:创建两个栈,一个用来存数字,一个用来存符号。起始,数字栈为空,符号栈底先存一个’\n’用来标记开始,用输入的’\n’标记结尾。开始处理输入的字符,当字符是运算符号时,根据运算符的优先关系:如果当前符号优先关系大于栈顶符号,入栈;如果小于,则拿出栈顶符号,再从数字栈拿出两个数字进行运算,将结果放在数字栈里;如果等于,说明是两个括号相遇,此时括号内的运算已经完成,原创 2017-09-20 12:36:08 · 1204 阅读 · 0 评论 -
栈的基本操作
包括构造空栈,销毁栈,把栈置空,检验栈是否为空,求栈的长度,取出栈顶元素,入栈,出栈原创 2017-09-05 17:08:11 · 410 阅读 · 0 评论 -
【c语言小项目】通讯录-文件版
通讯录文件版,通过动态内存分配完成,包括信息的增、删、查、改 头文件:#ifndef __ADDRESSLIST_H__#define __ADDRESSLIST_H__#define _CRT_SECURE_NO_WARNINGS#define MAX 2#include<stdio.h>#include<stdlib.h>#include<string.h>typedef struc原创 2017-09-21 23:21:36 · 362 阅读 · 0 评论 -
【c语言小项目】三子棋
#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<time.h>#include<stdlib.h>#define ROW 3#define COL 3void play_game();//游戏函数void menu();//菜单void print_bard(char board[ROW][COL],int row,int原创 2017-09-22 13:28:22 · 347 阅读 · 0 评论 -
const关键字总结
在C语言中,const限制变量是只读的,C语言对待const如同变量,只是加了一个只读属性,在编译期间一定会创建内存空间。指针常量:指针本身的值不变,指针指向的值可变,也就是说它只能指向某一个值。int a = 10;int b = 20;const int *p = &a;//指针常量// int const *p;//也是指针常量p = &b;//非法*p = 20;//合法常量指针原创 2017-11-04 22:36:59 · 198 阅读 · 0 评论 -
static关键字总结
1.C语言中的staticstatic变量:局部变量:改变了变量的存储方式(生命周期),使它存储于静态区中,在编译期间就分配内存,在整个程序执行期间一直存在。但是变量的作用域保持不变。 全局变量:改变了变量的链接属性,即变量只在本文件中有效。static函数:改变了函数的连接属性,即函数只在本文件内部有效,其他文件不可见。已初始化的静态变量保存在 .data段。未初始化的静态变量,编译器将自动初始原创 2017-11-02 23:19:42 · 211 阅读 · 0 评论 -
指针和数组总结
指针什么是指针指针类型解引用指针指针运算二级指针使用指针注意事项数组一维数组二维数组指针和数组数组指针指针数组指针和数组的区别函数丶指针和数组函数指针函数指针数组原创 2017-09-09 12:35:24 · 559 阅读 · 0 评论 -
动态内存知识总结
动态内存函数原创 2017-04-20 22:42:18 · 209 阅读 · 0 评论 -
合并两个有序数组
例如: 数组a1[]={1,3,9},数组a2[]={2,4,8,11,14},则合并为a3[]={1,2,3,4,8,9,11,14}思路: 依次扫描a1和a2的元素 ,比较当前元素的值,将较小的元素赋给a3,直到一个数组扫描完毕,然后将另一个数组的剩余元素赋给a3即可。数组a3的容量需要容纳a1和a2两个数组和长度和。代码实现:#include<stdio.h>#include<stdli原创 2017-08-11 19:04:16 · 267 阅读 · 0 评论 -
常用的几个字符串函数的使用和实现
字符串函数原创 2017-04-20 22:35:33 · 343 阅读 · 0 评论 -
函数调用过程(栈帧)的剖析和图解
我们通过一段简单的c语言程序 ,来简要的分析一下函数调用栈的详细情况:#includeint Add(int x,int y){ int z = 0; z = x + y; return z;}int main(){ int a = 10; int b = 20; int ret = Add(a,b); return 0;原创 2017-08-12 10:02:07 · 785 阅读 · 0 评论 -
可变参数列表解析
在c语言中 ,有些函数我们无法确定其需要传递的参数的个数 ,可以用省略号指定参数。它是利用函数传参时的过程实现的,函数传参过程是以栈的形式存取的。 关于函数栈帧 通过下面的代码来演示:#include<stdio.h>#include<stdarg.h>int add(int n,...)//n为后面参数的个数,...为可选参数{ va_list p; int i = 0原创 2017-09-04 23:17:14 · 172 阅读 · 0 评论 -
括号匹配问题
有四种情况左右括号匹配,如:({}[])左括号多出,如:([())右括号多出,如:(()])括号顺序不匹配,如:[(])用栈实现思路如下当遇到左括号的时候入栈当遇到右括号的时候,与栈顶的左括号匹配,栈顶左括号出栈;若不匹配,则匹配失败若栈以空,还有未匹配的右括号,说明右括号多出,匹配失败括号匹配完成后,若栈未空,说明左括号多出,匹配失败以上情况都未出现,匹配成功代码如下#inc原创 2017-09-06 13:34:41 · 245 阅读 · 0 评论 -
快速排序算法-Quick Sort
算法思想快速排序使用了分治思想,即:分解:数组以一个随机元素K为分割数,被划分为两个部分,左边部分的每一个元素都小于等于K,右边部分的每一个元素都大于等于K。解决:通过递归调用函数,对左边和右边进行排序。合并:因为在原空间进行排序,所以不需要合并。具体来分析数组分解的动作: 以数组arr[] = {6,4,7,2,8};为例,用i和j标记数组的起始位置和末尾位置,即i=0,j=4。选6为分原创 2017-09-07 22:52:59 · 257 阅读 · 0 评论 -
C语言总结
C语言知识体系原创 2017-12-06 16:37:22 · 250 阅读 · 0 评论