C语言
hyb_91
这个作者很懒,什么都没留下…
展开
-
C语言写一个计算器的三种方法
方法一:常规方法 #include<stdio.h>int Add(int a, int b){ return a + b;}int Sub(int a, int b){ return a - b;}int Mul(int a, int b){ return a * b;}int Div(int a, int b){ return a ...原创 2018-05-23 17:50:23 · 88579 阅读 · 5 评论 -
操作符和表达式的问题总结
操作符:算术操作符 + - * / %%操作符的两个操作数必须为整数移位操作符<< 左移操作符>> 右移操作符:逻辑移位(左边⽤0填充)、算术移位(左边⽤原该值的符号位填充)注意:对于移位运算符,不要移动负数位,这个是标准未定义的位操作符& 按位与 | 按位或 ^ 按位异或注:他们的操作数必须是整数赋值操作符 = :复合赋值符 +=...原创 2019-02-13 15:38:37 · 247 阅读 · 0 评论 -
C语言操作符
操作符分类算术操作符 移位操作符 位操作符 赋值操作符 单目操作符 关系操作符 逻辑操作符 条件操作符 逗号表达式 下标引用、函数调用和结构成员 1.算术操作符 + - * / %1. 除了了%操作符之外,其他的几个操作符可以作用于整数和浮点数。2. 对于/操作符如果两个操作数都为整...原创 2018-04-10 14:01:13 · 137 阅读 · 0 评论 -
一维数组中的一些问题
一:一维数组怎么才能正常创建下面创建一个数组:int arr1[10];想想下面这样写对吗?int count = 10;int arr2[count];这是错的! 注:数组创建,[ ]中要给一个常量才可以,不能使用变量。在C++中,在int前加一个const,conut就变成了一个常量,所以下面这个在C++中能正常运行。const int count = ...原创 2018-04-18 13:40:01 · 552 阅读 · 0 评论 -
C语言小游戏——三子棋
C语言 -- 三子棋 本篇主要是用二维数组和多个函数来实现三子棋游戏。 让我们先来看看这个编写这个游戏的思路:首先要打印三子棋的棋盘,然后是玩家下棋,电脑下棋,最后判断谁赢了,或者看看是否平局。 我们用一个头文件 game.h ,一个源文件 game.c(主要的代码都在这里面哦!)和一个源文件测试文件 text.c(主要写整个游戏的具体思路)来...原创 2018-04-23 22:23:05 · 666 阅读 · 0 评论 -
二维数组中的一些问题
一:二维数组怎么才能正确的初始化arr[3][4] = {1, 2, 3};arr[3][4] = {{1, 2}, 3};arr[3][4] = {{1}, {2}, {3}};这些显然是正常的初始化一个二维数组。下面这些,看看对不对:arr[][4] = {{1}, {2}, {3}};arr[3][] = {{1}, {2}, {3}};第一个对,第二个错。为...原创 2018-04-25 00:31:39 · 580 阅读 · 0 评论 -
有关数组的运算 (sizeof)(strlen)
一维数组int a[ ] = { 1,2,3,4 };printf("%d\n", sizeof(a)); //16 //数组名单独放在sizeof内部,数组名表示整个数组。 sizeof(数组名)计算的是整个数组的大小,单位是字节。printf("%d\n", sizeof(a + 0)); //4 不是单独放在...原创 2018-05-06 21:43:03 · 324 阅读 · 0 评论 -
程序环境——翻译环境与执行环境
本篇重点:程序的翻译环境和执行环境 详解翻译环境中的 编译+链接程序的翻译环境和执行环境在ANSI的任何一种实现中,存在两个不同的环境。翻译环境,在这个环境中源代码被转换为可执行的机器指令。 执行环境,它用于实际执行代码。 1、翻译环境 ^ 组成一个程序的每个源文件通过编译过程分别转换成目标文件(object code)^ 每个目标文件由链接器(li...原创 2018-05-15 18:08:05 · 567 阅读 · 0 评论 -
实现strcat
功能: 把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')。 说明: src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。 返回指向dest的指针。#include<stdio.h>#include<assert.h>char* my_strcat(char* ...原创 2018-05-19 18:17:51 · 144 阅读 · 0 评论 -
实现strcpy
strcpy把从src地址开始且含有'\0'结束符的字符串复制到以dest开始的地址空间,返回值的类型为char*。 #include<stdio.h>#include<assert.h>char* my_strcpy(char*dest, const char* src){ char* ret = dest; assert(des...原创 2018-05-19 18:07:16 · 179 阅读 · 0 评论 -
实现strchr
功能:查找字符串str中首次出现字符c的位置。说明: 返回首次出现c的位置的指针,返回的地址是被查找字符串指针开始的第一个与c相同字符的指针,如果Str中不存在c则返回NULL。 #include<stdio.h>#include<assert.h>char* my_strchr(const char* str, int c)...原创 2018-05-19 18:46:03 · 172 阅读 · 0 评论 -
实现strstr
从字符串str1中查找是否有字符串str2,如果有,从str1中的str2位置起,返回str1的指针,如果没有,返回null。 图解思路判断s1,s2是否相等,若相等,则s1,s2同时向后移一位;若不相等,cur后移一位,s1=cur。循环判断。 代码实现#include<stdio.h>#include<assert.h...原创 2018-05-19 18:38:38 · 338 阅读 · 0 评论 -
实现strcmp
strcmp : 比较两个字符串 规则:当str1<str2时,返回为负数 ; 当str1==str2时,返回值= 0 ; 当str1>str2时,返回正数。即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。 #include<stdio.h>#include<as...原创 2018-05-19 18:51:48 · 808 阅读 · 1 评论 -
实现memcpy
memcpy:c和c++使用的内存拷贝函数。 功能从源src所指的内存地址的起始位置开始拷贝count个字节到目标dest所指的内存地址的起始位置中。 #include<stdio.h>#include<assert.h>void* my_memcpy(void* dest, const void* src, size_t cou...原创 2018-05-19 19:08:26 · 465 阅读 · 0 评论 -
实现memmove
memmove用于从src拷贝count个字节到dest,如果目标区域和源区域有重叠的话,memmove能够保证源串在被覆盖之前将重叠区域的字节拷贝到目标区域中。但复制后src内容会被更改。但是当目标区域与源区域没有重叠则和memcpy函数功能相同。 #include<stdio.h>#include<assert.h>voi...原创 2018-05-19 19:11:09 · 271 阅读 · 0 评论 -
#define
#define : 1. 定义标识符2.定义宏#define定义标识符语法: #define name stuff例:#define MAX 1000printf("%d", MAX);#define reg register //为register这个关键字创造一个简短的名字reg int a = 10;...原创 2018-05-19 23:43:04 · 187 阅读 · 0 评论 -
宏和函数的区别
先来看看下面这段代码:#include<stdio.h> #define MAX(a, b) ((a)>(b)?(a):(b))int Max(int a, int b){ return a > b ? a : b;}int main (){ int x = 2; int y = 3; int max = MAX(x, y); printf...原创 2018-05-21 17:03:27 · 187 阅读 · 0 评论 -
标识符的链接属性
链接属性函数在使⽤的时候可能在不同的源⽂件中,每个源⽂件单独编译完成之后⽣成对应的⽬标⽂件,所有的⽬标⽂件以及那些从⼀个或者多个函数库中引⽤的函数,链接在⼀起形成了可执⾏程序。那相同的⼏个标识符出现在⼏个不同的源⽂件中,如何对待他们?标识符的链接属性决定了如何处理。链接属性分为:外部链接属性 内部链接属性 ⽆链接属性 外部链接属性:全局标识符具有外部链接属性。⼀个标识符...原创 2019-02-13 21:08:35 · 463 阅读 · 0 评论