
c基础总结
文章平均质量分 95
sifanchao
这个作者很懒,什么都没留下…
展开
-
可变参数列表源码的剖析及应用
我们在自己写一个函数时,我们发现:函数的传参参数是有限的,当你要传几个参数时,定义函数接收时就要定义几个形式参数。这个方法是十分麻烦的!//举个例子:实现一个函数可以求任意个参数的平均值#include<stdio.h>int ave(int n,int i,int j,int k)//创建4个形参{ int ave=0; return ave=(i+j+...原创 2018-04-18 18:52:07 · 184 阅读 · 0 评论 -
函数的调用过程,栈帧的创建和销毁
我们平时敲代码可以发现:当我们有一个清晰的思路时,编程就仅仅只是在框架内往其“添砖加瓦”。同一个道理,当我们清楚了解一段代码每个函数的开辟、调用、运行、返回时,那我们学习语言时往往事半功倍。所以,我们需要掌握函数的调用过程。 下面用Add函数为例,阐述函数的调用过程。#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#in...原创 2018-04-16 00:48:18 · 328 阅读 · 0 评论 -
scanf常见的注意问题
scanf()函数是通用终端格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。可以读入任何固有类型的数据并自动把数值变换成适当的机内格式。其调用格式为: scanf(“<格式化字符串>”,<地址表>);scanf()函数接收输入数据时,遇以下情况结束一个数据的输入:(不是结束该scanf函数, scanf函数仅在每一个数据域均有数据,并按回车后结...原创 2018-04-11 23:57:17 · 3198 阅读 · 0 评论 -
数组总结
数组的创建type_t arr_name [const_n];注意:1.[]中要是一个常量2.数组初始化时,[]不能为0。int arr[0]; //error代码3.数组创建的时候如果不想指定数组的确定大小就要初始化。数组的元素个数根据初始化的内容来确定。char arr1="abc";char arr2="abc";if(arr1==arr2) printf("hehe\n"...原创 2018-04-03 23:56:29 · 147 阅读 · 0 评论 -
数组sizeof、strlen相关运算(一维、二维、字符数组)
//一维数组 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 首元素 printf("%d\n",sizeof(a+1)); //4 第二个元素地址 pr...原创 2018-04-03 00:06:16 · 931 阅读 · 0 评论 -
C语言操作符总结
操作符分类:算数操作符 移位操作符 位操作符 赋值操作符 单目操作符 关系操作符 逻辑操作符 条件操作符 逗号操作符 下标引用、函数调用和结构成员算数操作符 + 加、- 减、* 乘、/ 除、% 模运算或求余1.除了%操作符之外,其他的几个操作符可以作用于整数和浮点数。 2.对于/操作符,如果两个操作符都是整数,执行整数除法。而只要有浮点数就执行浮点数除法。 3.%操作符左右两个操作数...原创 2018-03-30 03:53:07 · 261 阅读 · 0 评论 -
VS2013 .C文件的创建
1.打开VS2013界面2.点击:文件—新建—项目3.选择空项目(或Win32 控制台应用程序),更改文件名、文件路径(默认也可)4.右键源文件—添加—新建项5.选择C++文件,创建文件名(最好不要出现中文),一般选用“.c”源文件(不选用.cpp)6.创建好文件,就可以敲写代码...原创 2018-03-19 21:05:23 · 6428 阅读 · 0 评论 -
#define与函数、typedef、enum、const的区别
#define 替换在程序中扩展#define定义符号和宏时,需要涉及几个步骤。在调用宏时,首先对参数进行行检查,看看是否包含任何由#define定义的符号。如果是,它们首先被替换。 替换文本随后被插⼊入到程序中原来文本的位置。对于宏,参数名被他们的值替换。最后,再次对结果文件进行行扫描,看看它是否包含任何由#define定义的符号。如果是,就重复上述处理过程。注意:宏参数和#d...原创 2018-05-16 00:47:05 · 1022 阅读 · 0 评论 -
模拟实现库函数strcpy、strlen、strcat、strstr、strchr、strcmp、memcpy、memmove
库函数strcpy的模拟实现:把从src地址开始且含有’\0’结束符的字符串复制到以dest开始的地址空间,返回值的类型为char*#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>#include <assert.h>cha原创 2018-04-19 00:27:00 · 639 阅读 · 0 评论 -
大小端(数据在内存中的存储)
大小端模式介绍大端(存储)模式:是指一个数据的低位字节序的内容放在高地址处,高位字节序存的内容放在低地址处。 小端(存储)模式:是指一个数据的低位字节序内容存放在低地址处,高位字节序的内容存放在高地址处。(可以总结为“小小小”即低位、低地址、小端) 在计算机系统中,我们是以字节为单位存放数据的,每个地址单元都对应着一个字节,一个字节为8bit。但在C语言中存在不同的数据类型,占用的字...原创 2018-04-19 01:24:58 · 33045 阅读 · 0 评论 -
动态内存
我们平时内存开辟的方式:int val=20;//在栈空间开辟四个字节char arr[10]={0};//在栈空间上开辟10个字节的连续空间这样开辟空间的方式有两个特点:空间开辟的大小是固定的数组在申明的时候,必须指定数组的长度,它所需要的内存在编译时分配但是对于空间的需求,不仅仅是上述的情况。有时候我们需要的空间大小在程序运行的时候才能知道,那数组编译时开辟空间的方...原创 2018-05-08 23:36:06 · 257 阅读 · 0 评论 -
C语言中的自定义类型:结构体、枚举、联合
我们知道c语言基本数据类型有: 本篇将重点介绍C语言中的自定义类型:结构体、枚举、联合结构体定义:结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。构造: struct 结构体名 { 结构体所包含的变量或数组 };声明与定义struct Stu{ char name[20];//名字 int a...原创 2018-05-08 11:02:24 · 8661 阅读 · 0 评论 -
字符串函数
在之前的篇章里,我介绍了常见的字符串函数并模拟实现求字符串长度 strlen 长度不受限制的字符串函数 strcpy strcat strcmp字符串查找 strchr strstr内存操作函数 memcpy memmovehttps://blog.youkuaiyun.com/sifanchao/article/details/79999077这一篇...原创 2018-05-06 00:19:57 · 357 阅读 · 0 评论 -
转移表和回调函数的使用(袖珍计算器的编写 / 模仿qsort的功能实现一个通用的冒泡排序)
在上一篇已经对函数指针、函数指针的数组、函数指针数组的指针加以分析,那么如此繁多的 “指针/数组” 如何使用? 最常见的两个用途就是转换表和作为参数传递给另一个函数(回调函数)转换表我们取一段实现袖珍式计算器的程序代码:switch(input);case ADD: result=add(x,y); break;case SUB: result=s...原创 2018-05-04 03:03:47 · 266 阅读 · 0 评论 -
指针、数组指针、指针数组、函数指针、函数指针数组、函数指针的数组的指针
指针:地址的形象化称为指针,意思是通过它能够找到以它为地址的内存单元。举两个例子,说明指针的用法:指针与变量(将num的值改变为20)int num=10;int* p=#*p=20;指针与数组(打印数组)void print_arr(int *p,int sz){ int i=0; for(i=0;i<sz;...原创 2018-04-26 01:30:53 · 325 阅读 · 0 评论 -
main()函数的参数解析,并使用main函数的参数,实现一个整数计算器。
int main(int argc,char *argv[],char *envp[]){ program-statements}这里有三个参数:argc:整型变量,表示命令行空指针前参数的个数(含第一个参数)。argv:字符指针的数组,每个元素是一个字符指针,指向一个字符串。这些字符串就是命令行中的每一个参数(字符串)。envp:字符指针的数组,数组的每一个原元素是一个...原创 2018-04-21 00:57:05 · 538 阅读 · 0 评论 -
程序环境
在我们最开始学c语言时,我们知道: 源文件(.c) -> 编译 +链接(.obj) -> 可执行程序 (.exe)那么计算机在每一步具体干了什么?:在ANSI C的任何一种实现中,存在两个不同的环境。一. 翻译环境(编译+链接):在这个环境中源代码被转换成可执行的机器指令。组成一个程序的每个(有可能有多个)源文件单独通过编译器分别转换成目标代码(.obj)。各...原创 2018-04-19 17:08:00 · 627 阅读 · 0 评论 -
C语言中的32个关键字
C语言简洁、紧凑,使用方便、灵活。ANSI C标准C语言共有32个关键字,9种控制语句,程序书写形式自由,区分大小写。 一:表示数据类型 1、char 声明字符型变量或函数返回值类型 2、int 声明整型变量或函数 3、long 声明长整型变量或函数返回值类型 4、short 声明短整型变量或函数 5、signed 声明有符号类型变量或函数 ...原创 2018-04-19 15:40:50 · 758 阅读 · 0 评论 -
算术转换与整形提升
int main(){ char u = 128; unsigned char s = 128; unsigned short us; us = s + u; printf("us = 0x%x\n", us); us = (unsigned char)u + s; printf("us = 0x%x\n", us); us = (...原创 2018-05-16 01:27:45 · 301 阅读 · 0 评论