
C语言
黑米姐姐
喜欢就要做到极致
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C语言:素数求解的N种境界
试除法 试除法就是要判断一个数x是否为素数,就不断尝试小于x大于1的自然数,只要有一个能够整除,则x是合数,否则是素数 1、境界1(最差情况下) 判断x是否为素数,从2一直尝试到x-1,这种方法效率很差 int main() { int i = 0; int j = 0; int count = 0; for (i = 100; i <= 200; ++i) { for (...原创 2019-08-27 18:45:16 · 6319 阅读 · 8 评论 -
C语言:typedef与宏的区别
typedef的注意点 1、typedef是定义了一种类型的新别名,与宏不同,它不是简单的字符串替换,例如: 定义typedef char* ptr,实现int my_strcmp(const ptr,const ptr),const ptr并不是相当于const char*,而是char* const. 2、typedef 在语法上是一个存储类的关键字,它并不真正影响对象的存储特性,例如: t...原创 2019-08-22 15:20:05 · 748 阅读 · 0 评论 -
C语言:隐式类型转换与强制类型转换
在C语言中,进行类型之间的转换有两种转换方式: 强制类型转换与隐式类型转换 强制类型转换 语法:(目标类型)变量名或者具体的数值 结果:1、目标类型能够容纳目标值,结果不变 2、目标类型不能容纳目标值,结果产生截断 注意:结果产生截断与操作系统的大小端有关;并不是所有的强制类型转换都能够成功,当不能进行强制类型转换时,编译器会产生错误信息。 例如: struct S { int a; in...原创 2019-08-22 15:00:59 · 2215 阅读 · 0 评论 -
C语言:函数栈帧
函数栈帧定义 在函数调用过程中,要为函数开辟空间,这个空间用来此次函数调用中临时变量的保存和保护,将这个栈空间称为函数栈帧。 如何调用 例如这段代码: #include <stdio.h> //函数栈帧 int Add(int left, int right) { int z = 0; z = left + right; return z; } int main() { int...原创 2019-08-22 14:23:03 · 222 阅读 · 0 评论 -
c语言总结:static关键字的用法与const*与*const的区别
在c语言中,static是用来修饰变量与函数的,主要分为: 修饰局部变量 static修饰的局部变量只执行一次,延长了局部变量的生命周期,让静态局部变量出了作用域依然存在,直到程序运行结束后才被释放。 例如:代码1 void test() { int i = 0; i++; printf("%d ", i); } int main() { for (int i = 0; i < ...原创 2019-07-11 14:44:34 · 331 阅读 · 0 评论 -
c语言总结8:程序环境与预处理
翻译环境(linux环境下) 在翻译环境中,源代码被转换为可执行的机器指令 预编译阶段:重定项,进行头文件的包含,注释的删除,#define定义符号的替换,不进行语法检查 编译阶段:把c语言代码转换为汇编代码 汇编阶段:将汇编指令转换为机器指令(二进制文件)形成目标文件,形成符号表,存到目标文件,符号汇总包括全局、静态变量、函数名的汇总,局部变量不汇总 链接阶段:合并段表:将两个目标文件相同的段...原创 2019-07-10 19:03:27 · 133 阅读 · 0 评论 -
一个关于宏的例子:(求任意几个数的平均值)
一个关于宏的例子:(求任意几个数的平均值) #include <stdarg.h> int Avg(int n, ...) { int sum = 0; va_list arg; va_start(arg, n); for (int i = 0; i < n; ++i) { sum += va_arg(arg, int); } va_end(arg); ret...原创 2019-06-27 22:25:33 · 976 阅读 · 0 评论 -
c语言实现通讯录(存入文件)
实现一个通讯录:通讯录可以用来存储1000个人的信息,每个人的信息包括:姓名,性别,年龄,电话号码,地址 要求实现下列功能: 添加联系人信息 删除指定联系人信息 查找指定联系人信息 修改指定联系人信息 显示所有联系人信息 清空所有联系人 以名字排序所有联系人 保存联系人到文件 加载联系人 分为三个文件: contact.h:负责函数的声明 contact .c:负责函数的实现 test.c:...原创 2019-07-04 19:14:58 · 2338 阅读 · 1 评论 -
c语言总结 7:文件相关操作
文件打开和关闭 规定使用fopen函数打开文件,fclose函数关闭文件 FILE* fopen(const char* filename,const char* mode)//mode表示以什么形式打开 int fclose(FILE* stream) 文件使用方式 1.“r”(只读)表示为了输入数据,打开一个已经存在的文本文件,如果指定文件不存在,则出错 2.“w”(只写)表示为了输出数据,...原创 2019-07-04 16:00:57 · 223 阅读 · 1 评论 -
c语言总结 6:动态内存管理
动态内存分配介绍 在开辟空间时,内存中主要有三个区,为栈区,堆区,静态常量区,栈区中中主要存储局部变量和形式参数,栈区存储由动态内存函数开辟的空间,静态常量区存储有static关键字的全局变量(但不完全是)和静态数据 动态内存函数 1.malloc void* malloc(size_t size) 这个函数向内存申请一个连续可用的空间,并返回这块空间的指针,若开辟成功,返回开辟好空间的指针,若...原创 2019-07-03 16:53:19 · 157 阅读 · 0 评论 -
C语言总结5:自定义类型(结构体,枚举,联合)
1.结构体 结构体声明 例如描述一个学生: struct stu { char name[20]; short age; char sex[3]; }; 特殊声明: struct { int a; int b; int c; char d[20]; }x; struct { int a; int b; int c; char d[20]; }a[10],*p; 注意:...原创 2019-06-02 19:02:27 · 511 阅读 · 2 评论 -
c语言总结 4:字符函数和字符串函数(模拟实现)
求字符串长度(strlen) size_t strlen(const char *str) 函数返回字符串中’\0’之前的字符个数(不包括’\0’),参数指向的字符串必须以’\0’结束 模拟实现(3种方法) int my_strlen1(const char *str)//递归 { assert(str); if (*str == '\0') return 0; else ret...原创 2019-07-03 14:45:35 · 172 阅读 · 0 评论 -
c语言总结 3:指针和数组笔试题详解
数组笔试题 一维数组 例如: int a[] = { 1, 2, 3, 4 }; printf("%d\n", sizeof(a));//整个数组的大小 16 printf("%d\n", sizeof(a+0));//首元素的地址 4 printf("%d\n", sizeof(*a));//首元素 4(a为首元素地址,*a为首元素) printf("%d\n", sizeo...原创 2019-07-03 11:35:55 · 513 阅读 · 1 评论 -
c语言总结 2.指针(重点)
主要内容为: 字符指针 数组指针 指针数组 函数指针 指针函数 复杂指针、 函数指针数组 回调函数 1.字符指针(char*) 一般使用方法为: char ch = 'w'; char *pc = &ch; printf("%c", *pc); 结果为‘w’ 另一种使用方式为: char *pstr = "hello world"; printf("%s\n"...原创 2019-07-02 20:13:55 · 176 阅读 · 0 评论 -
c语言总结 1.数据在内存中的存储
数据类型 整形家族 char //字符类型(分为signed char与unsigned char,signed char 的范围为-127-128,unsigned char 的范围为0-255) short //短整型(分为signed short与 unsigned short,signed short 的范围为-32768-32767,unsigned short...原创 2019-07-02 15:46:48 · 358 阅读 · 0 评论 -
c语言实现扫雷小游戏(优化后)
游戏介绍 游戏打开界面为菜单,选择‘1’开始游戏,打印出一个9*9棋盘,系统随机设置10个雷,之后玩家输入坐标进行游戏,第一次不会踩到雷,如果走的棋盘格周围的8个格子都没有雷,直接展开空格,继续扫描这8个格子各自周围的8个格子是否有雷,如果有雷则显示雷的个数,没有雷就继续展开,如果踩到雷,游戏结束,打印存放雷的信息的棋盘。 实现 我们需要两个棋盘,一个是程序设计者棋盘,一个为显示给玩家的棋盘 1....原创 2019-04-28 13:48:00 · 656 阅读 · 0 评论 -
C语言操作符总结
一、c语言操作符分为以下类别: 算数操作符 移位操作符 位操作符 赋值操作符 单目操作符 关系操作符 逻辑操作符 条件操作符 逗号表达式 下标引用、函数调用、结构成员 1、算数操作符 加+,减-,乘*,除/,取模% 1、/操作符:若两个操作数都是整数则进行整数出发,若有浮点数执行浮点数除法; 2、%操作符:两个操作数必须为整数。 2、移位操作符 << 左移 ,>>右移...原创 2019-04-23 15:29:19 · 165 阅读 · 0 评论 -
C语言实现三子棋游戏
三子棋问题 1.算法思想与实现 打印游戏菜单 用户输入1表示开始游戏,输入0表示结束游戏 初始化棋盘与打印棋盘 在屏幕上打印33棋盘,将棋盘的每一格设置为空格,当然也可以让棋盘扩展为99棋盘,可以任意扩展大小 实现玩家走与电脑走 玩家输入棋盘坐标下棋,电脑通过系统随机生成坐标下棋 判断输赢 如果显示‘C’,则表示继续,否则判断输赢 2.编程思想 运用二维数组,循环,嵌套,函数调用 代码包含三...原创 2019-04-20 16:06:29 · 388 阅读 · 2 评论