C语言
文章平均质量分 57
Cecilia3333
这个作者很懒,什么都没留下…
展开
-
通讯录的文件存储版本
contact.h#ifndef __CONTACT_H__ #define __CONTACT_H__ #include <stdio.h> #include <string.h> #include<stdlib.h> enum OP{ EXIT, ADD, DELE, SER, ...原创 2018-03-08 20:54:23 · 290 阅读 · 0 评论 -
在一个字符串中查找子串最右出现的位置
#include <string.h>char* mystrrstr(const char* s1,const char* s2){ char* last; char* cur; last = NULL; if(*s2 != '\0'){ cur = strstr(s1,s2); while(cur != NULL){ ...原创 2018-06-01 10:47:47 · 1112 阅读 · 0 评论 -
利用指针对数组进行初始化
对一个数组进行初始化,使数组中的所有元素全部为0,这个操作是很简单的。最简便的方法就是在对数组进行定义时就对其初始化:#include <stdio.h>#define LEN 5int main(){ int arr[LEN] = {0}; int i = 0; for(;i < LEN;i++) printf("%d ",arr[i...原创 2018-05-28 15:50:17 · 8035 阅读 · 0 评论 -
在一组字符串中查找一个特定的字符
这里我们介绍两种方法。第一种:第二种:原创 2018-05-27 23:44:28 · 8522 阅读 · 1 评论 -
计数一个值中值为1的位的个数
初级版本:通过右移操作,每右移一位就通过取模来判断最后一位是否为1。int count_one_bits(unsigned value){ int ones = 0; for(;value != 0;value = value >> 1){ if(value % 2 != 0) ones += 1; } retur...原创 2018-05-26 23:14:45 · 876 阅读 · 0 评论 -
字符串函数的模拟实现(2)
memcpy功能:从src所指的内存地址的起始位置开始,拷贝count个字节的数据到目标dest所指的内存地址的起始位置中。#include <stdio.h>#include<assert.h>void* my_memcpy(void* dest,const void* src,size_t count){ assert(dest); assert(...原创 2018-04-26 23:27:11 · 133 阅读 · 0 评论 -
字符串函数的模拟实现(1)
strlen第一种:计数器方式#include <stdio.h>int my_strlen(const char* str){ int count = 0; while(*str){ count++; str++; } return count;}int main(){ char arr[]="hell...原创 2018-04-26 19:39:49 · 131 阅读 · 0 评论 -
C语言操作符小结
算术操作符:+,, -, *, /, %移位操作符:> 右移 (左移一位等效于乘2,右移一位等效于除以2) 右移分为算术移位和逻辑移位。算数移位时,左边用原该值的符号位填充,右边丢弃;逻辑移位时,左边用0填充,右边丢弃。位操作符:& 按位与 , | 按位并 , ^ 按位异或原创 2017-11-18 22:38:59 · 242 阅读 · 0 评论 -
数组知识点小结
char arr[ ]="abcdef" 中有七个元素,分别为 a , b , c , d , e , f , \0不能分配常量大小为0的数组。访问数组要用下标访问,且下标要从0开始。数组在内存中连续存放。数组的数组名相当于数组首元素的地址。sizeof(数组名),数组名表示整个数组,求的是整个数组的大小;&数组名,数组名表示整个数组,取出来的是数组的地址。除此之外,所有的数原创 2017-11-19 22:28:18 · 773 阅读 · 0 评论 -
浅谈函数的调用过程,栈帧的创建和销毁
原码:按到 f10 ,转到反汇编:call命令的功能:1.将当前正在执行指令的下一条指令的地址压入栈中 ; 2.随即跳转(jmp)至指定函数ret 返回要做的两件事 : 1.弹出pop栈顶; 2.弹出栈顶的值的地原创 2017-12-07 00:29:07 · 232 阅读 · 0 评论 -
可变参数列表解析
将函数实现为可变参数的形式,可使函数接受1个以上的任意多个参数。例:实现一个函数求任意多个参数的平均值。可变参数的限制:1.可变参数必须从头到尾逐个访问;2.参数列表中至少有一个命名参数;3.宏无法直接判断实际存在参数的数量;4.宏无法判断每个参数的类型。原创 2017-12-12 16:40:39 · 186 阅读 · 0 评论 -
小游戏三子棋的C语言代码实现
头文件:game.h#ifndef __GAME__H__ #define __GAME_H__ #include"time.h" #include"stdlib.h" #include"string.h" #include"stdio.h" #define ROWS 3 #define COLS 3 void init_board(char arr[ROW原创 2017-12-17 17:43:57 · 536 阅读 · 0 评论 -
指针 数组 函数
1.指针数组:指针数组是数组,这个数组用来存放指针。例:int *arr[10]; 整形指针数组; char **arr[10]; 字符型的二级指针数组2.数组指针:数组指针是指针,指针指向的是数组。例:int (*p)[10]; 数组指针([ ] 的优先级高于*,所以需要加上( )来保证p先与*结合)3.函数指针:函数指针是指针,指针指向的是一个函数。原创 2017-12-19 22:55:29 · 854 阅读 · 0 评论 -
自定义类型知识点小结
一. 结构体1. 结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。2.结构的声明:这里的tag指的是结构体的名称,原则上可以省略,但一般不建议省略。举个例子,这里我们定义一个关于学生基本信息的结构体:3.结构体成员:结构体的成员可以是标量,数组,指针,甚至是其他结构体。这里的标量指的是int , char , float ,原创 2017-12-29 23:07:11 · 419 阅读 · 0 评论 -
进度条的代码实现
#include<stdio.h>#include<string.h>#include<unistd.h>int main(){ int i = 0; char bar[102] = "#"; char sym[] = "|/-\\"; for(i=1;i<=100;i++){ bar[i]='#'; ...原创 2018-03-06 21:19:12 · 750 阅读 · 0 评论 -
扫雷的代码实现
要求:(1)第一次下子,不炸死。 (2)坐标周围没雷时,可以实现展开。game.h #ifndef __GAME_H__ #define __GAME_H__ #include <stdio.h> #include <stdlib.h> #include <time.h> #define _CRT_SECURE_NO_WARNINGS...原创 2018-03-08 20:04:02 · 10428 阅读 · 1 评论 -
通讯录的动态版本
contact.h#ifndef _CONTACT_H__#define _CONTACT_H__#include<stdio.h>#include <stdlib.h>#define INC 2 //每次开辟的内存大小#define SZ 3 //默认大小#define MAX 1000#define NAME 10#define SEX 5#defin...原创 2018-03-08 20:30:20 · 352 阅读 · 0 评论 -
C语言基础代码(7)
1、使用可变参数,实现函数,求函数参数的平均值。#include <stdio.h>#include<stdarg.h>int average(int n,...){ va_list arg; int i = 0; int sum = 0; va_start(arg,n); for(i = 0;i < n;i++){...原创 2019-02-27 18:02:35 · 2012 阅读 · 1 评论