C语言知识总结
文章平均质量分 83
码农印象
修炼的过程中,最好有人和你并肩而行,共同成长!努力做一个文邹邹的工具人,你做得越多,你知道的越多......
展开
-
【C语言】让你不再害怕指针——C指针详解(经典,非常详细)
因排版过于粗糙学习详情转至 : https://blog.csdn.net/qq_41035588/article/details/97010039前言:复杂类型说明 要了解指针,多多少少会出现一些比较复杂的类型,所以我先介绍一下如何完全理解一个复杂类型,要理解复杂类型其实很简单,一个类型里会出现很多运算符,他们也像普通的表达式一样,有优先级,其优先级和运算优先级一样,所以我总...转载 2018-03-23 23:02:13 · 131503 阅读 · 61 评论 -
【C语言】字符串相关函数实现
前言【需求分析 】:C语言中关于字符串的函数有很多,但往往需要的是靠自己去理解,去实现。 实现函数my_strlen() 【功能描述】 :返回字符串的长度方法一 :int my_strlen(const char *str){ int count = 0; assert(str); while(*str) { ...原创 2018-06-29 15:10:55 · 668 阅读 · 0 评论 -
【C语言】malloc、calloc、realloc的区别
C/C++程序内存分配: 注意: 1.内存泄漏(仅存在程序运行时,程序退出,OS将回收所有资源)是指那些本应该回收(不再使用)的内存对象无法被系统回收的现象。在c/c++中需要程序猿手动释放内存对象,所以在C/C++中更容易存在内存泄漏。java引入了自动回收机制,使得在C/C++中令人头疼的内存问题得到了有效的改善,但这并不意味着java程序员不关注...原创 2018-08-18 21:59:35 · 1766 阅读 · 0 评论 -
【C语言】模拟实现库函数strchr、strrchr、memchr
①strchr函数 【函数原型】:char* strchr(const char* string,int c); 【函数功能】:在一个字符串中查找指定字符的第一次出现的位置。如果查找成功,返回该字符的地址,如果查找失败,则返回 NULL。 【参考代码】:#include<stdio.h>#include<assert.h>ch...原创 2018-08-19 04:20:04 · 1015 阅读 · 0 评论 -
【C语言】数据结构和内存中的堆和栈
致读者:首先我们可以先看看这篇Blog : 动态内存分配区别一、数据结构中的栈与堆:堆和栈在数据结构中是两种不同的数据结构,两者都是数据项按序排列的数据结构。栈:像是装数据的桶或者箱子 栈是大家比较熟悉的一种数据结构,它是一种具有后进先出的数据结构,也就是说后存放的先取,先存放的后取,这就类似于我们要在取放在箱子底部的东西(放进去比较早的物体),我们首先要移开压...原创 2018-08-23 12:39:55 · 2989 阅读 · 0 评论 -
【C语言】用回调函数实现冒泡排序
(一)什么是回调函数呢?回调函数就是通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。(二)回调函数的实现机制1.定义一个回调函数2.提供函数实现的一方在初始化时。将回调函数的函数指针注册给调用者。3.当特定的条件发生时,调用者使用函数指针调用回调函数对事件进行处理。(三)回调函数的使...原创 2018-08-21 18:47:09 · 2282 阅读 · 0 评论 -
【C语言】文件信息输入与输出
要求:将学生信息(姓名,年龄,学号,家庭住址)写入文件,并输出某一学生信息(比如最后一个学生)程序中所涉及的函数如下:1:文件打开函数:fopen(欲打开的文件名称or文件路径,哪种方式)2:文件关闭函数:fclose(文件指针)3:文件信息写入函数(数据块):fwrite(要写入数据的地址,要写入数据项的字节数size,要写入size字节数据项的个数,文件指针)4:文件信息读出...原创 2018-10-14 22:08:54 · 2203 阅读 · 3 评论 -
【C语言】PAT编程题引出int和long的区别
题目描述给定区间[-2的31次方, 2的31次方]内的3个整数A、B和C,请判断A+B是否大于C。输入描述:输入第1行给出正整数T(<=10),是测试用例的个数。随后给出T组测试用例,每组占一行,顺序给出A、B和C。整数间以空格分隔。输入例子:41 2 32 3 42147483647 0 21474836460 -2147483648 -2147483647输出...原创 2018-10-14 22:49:00 · 350 阅读 · 0 评论 -
【C语言】概述从源码到可执行文件
自第一次输出“hello world”「源代码如何变成可执行文件」的问题就一直伴随着我本次以《程序员的自我修养—链接、装载与库》为参考,对这一过程做简单总结简介高级语言的出现使得程序员可以尽量少考虑计算机本身的限制(如字长、内存大小、通信方式、存储方式)相对的,程序员可以拥有更多精力在程序逻辑本身结合高可移植性,高级语言使得开发效率得到极大的提高可我们仍需学习高级语言到生成个执行文...原创 2018-10-08 19:53:26 · 985 阅读 · 0 评论 -
【C语言】声明与定义
前言引用性声明 不分配存储空间,如extern int x; 只是告诉编译器x是整形,已经在其它地方定义了。定义 是在内存中确定变量的位置、大小。初始化 是定义变量时候赋给变量的值(从无到有)赋值 是以后用到该变量,赋给该变量新的值 int i;//定义 extern int i; //声明 int i=9;初始化 i= 7;// 赋值变量定义与声明的联系区别我们在程...原创 2018-10-20 19:59:49 · 4067 阅读 · 0 评论 -
【C语言】详解(预处理标识符/宏与函数/编译过程)
预处理符号常见的五种预定义符号有:①__LINE__:当前源程序的行号②__FILE__:正在编译的程序的文件③__DATE__:编译的日期字符串,形如"Mmm dd yyyy"④__TIME__:编译的时间字符串,形如"hh:mm:ss"⑤__STDC__:如果__STDC__的内容是十进制常数1,则表示编译程序的实现符合标准C他们的值或者都是字符串常量,或者是十进制数字常量。__...原创 2018-10-21 03:08:42 · 822 阅读 · 0 评论 -
【C语言】结构体内存对齐
前言什么是结构体?定义:结构体是一系列数据的集合这些数据可能描述了一个物体,也可能是对一个问题的抽象。举个栗子,简单的说,对于人,人有名字,性别,年龄,身高,体重等个人信息,那么,我们在定义这种个体的时候,就不能说它能用一个字符或整型变量来定义。 这时候,就需要结构体闪亮登场了。结构体内存对齐:元素是按照定义顺序一个一个放到内存中去的,但并不是紧密排列的。从结构体存储的首地址开始,每个元素放...原创 2018-10-24 14:24:01 · 814 阅读 · 0 评论 -
【C语言】容易遗漏的atoi
atoi难就难在很少有人能考虑到它所涉及的各个方面,因此觉得有必要写一篇文章来详细阐述一下令不少程序猿遗憾的atoi。函数原型【头文件】#include <stdlib.h>【函数原型】atoi() 函数用来将字符串转换成整数(int),其原型为int atoi (const char * str);【函数说明】atoi() 函数会扫描参数 str 字符串,跳过前面的空白字符(...原创 2019-03-19 21:13:30 · 657 阅读 · 0 评论 -
【C语言】函数调用过程(栈桢)
前言 栈帧也叫过程活动记录,是编译器用来实现函数调用过程的一种数据结构。C语言中,每个栈帧对应着一个未运行完的函数。从逻辑上讲,栈帧就是一个函数执行的环境:函数调用框架、函数参数、函数的局部变量、函数执行完后返回到哪里等等。栈是从高地址向低地址延伸的。每个函数的每次调用,都有它自己独立的一个栈帧,这个栈帧中维持着所需要的各种信息。寄存器ebp指向当前的栈帧的底部(高地址),寄存器esp...原创 2018-06-02 21:03:45 · 1593 阅读 · 0 评论 -
【C语言】自定义类型:结构体,枚举,联合
前言 对于C语言的学习,我们知道有基本数据类型,指针类型,自定义类型等。今天一起来探讨一下自定义类型。 结构体结构体的声明结构的基础知识 结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。结构的声明struct tag{ member_list; //成员列表}variable_list; ...原创 2018-06-02 20:54:18 · 1322 阅读 · 0 评论 -
【C语言】求解素数(质数)的N种境界
★前言: 众所周知,不管是在学习、考试还是以后找工作中,对于求解素数的问题随处可见,而且还是一个重难点,为何要说是重难点呢?主要是因为对于不同的人往往会有不同做法,但大多数掌握的都是一些非常平庸的做法,完全没有技术含量。然而这对于我们这些技术人员无疑是一个BIG BUG。所以小编在此整理了一些求解套路,如有疑问,欢迎来扰。★试除法: 首先要介绍的,当然非"试除法"莫属啦。考...原创 2018-03-28 15:41:59 · 3109 阅读 · 2 评论 -
【C语言】操作符总结之大话西游篇
致读者: C语言表达能力强,其中一个重要方面就在于它的表达式类型丰富,运算符功能强,因而c使用灵活,适应性强。我觉得想要c语言学的好,操作符这关就一定要精通,这个可以帮你有效的剪短代码行 , 让你的代码更简练漂亮。以下就是C语言中的操作符及运算优先级的详细介绍:操作符的分类:算术操作符、移位操作符、位操作符、赋值操作符、单目操作符、关系操作符、逻辑操作符、条件操作符、逗号表达式。算数操...原创 2018-04-03 20:11:10 · 653 阅读 · 0 评论 -
【C语言】数组知识点总结
致读者:在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。在C语言中,数组属于构造数据类型。数组:一组有序数据集合,且其中的元素都属于同一数据类型(type_t arr_name [const_n];),利用数组名和下表来唯一确定数组中的元素。1.数组的创建和初始化创建数组方式:一维数组:type_t arr_name [cons...原创 2018-04-12 17:44:44 · 2317 阅读 · 0 评论 -
【C语言】大端小端详解
1、什么是大小端模式?大端模式:是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中。小端模式:是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中。举个栗子:比如数字 0x12 34 56 78在内存中的表示形式为:1)大端模式:低地址 -----------------> 高地址0x12 | 0x34 | 0x56 | 0x782)小端...原创 2018-04-06 14:45:29 · 1742 阅读 · 0 评论 -
【C语言】平均数N种境界
致读者:平均数 平均数是指在一组数据中所有数据之和再除以数据的个数。平均数是表示一组数据集中趋势的量数,它是反映数据集中趋势的一项指标。解答平均数应用题的关键在于确定“总数量”以及和总数量对应的总份数。在统计工作中,平均数(均值)和标准差是描述...【方法一】:这种方法最为简单,弊端是如果a和b非常大的话,a+b的值可能超过了整型的储存范围(最大值为2147483647),导致溢出,得...原创 2018-05-01 18:45:13 · 1891 阅读 · 4 评论 -
【C语言】浅析(命令行参数 )&&(main函数参数)
命令行参数:● 命令行参数是控制命令执行的一种方式。 ● 命令行参数类似于函数的参数,只是命令行参数是传送给命令的。命令执行时,内核已经将命令行参数放入命令的栈中,命令执行时则可以获取命令行参数,解析,执行。● 命令行参数使命令可以执行不同任务。linux系统下的实现:#include <stdio.h> int main(int argc, char *argv[]) {...原创 2018-05-11 16:47:03 · 2617 阅读 · 0 评论 -
互联网面试经典 -C/C++关键字
register:register关键字的作用:请求CPU尽可能让变量的值保存在CPU内部的寄存器中,减去CPU从内存中抓取数据的时间,提高程序运行效率。register作用的实现原理:扩展:CPU组成,计算机系统组成,数据处理流程什么时候使用register?一般,我们将频繁被访问的变量,用register修饰(因为CPU内存资源是有限的,是稀缺的,不可能...原创 2018-04-27 19:41:03 · 963 阅读 · 0 评论 -
【面试】函数之可变参数列表
可变参数函数:顾名思义,就是函数参数个数是未知的是可变的。可变参数列表是通过宏来实现的,这些宏定义在stdarg.h 这个头文件中,这个头文件声明了一个类型va_list和三个宏——va_start , va_arg, va_end。我们可以通过声明一个类型为va_list的变量,与这三个宏配合使用,从而访问参数的值,用法:比如定义一个可变参数函数:void print(char *fomate...原创 2018-05-18 21:15:51 · 524 阅读 · 0 评论 -
【C语言】浅析指针数组,数组指针,函数指针,函数指针数组,指向函数指针数组的指针
前言:对于指针,我们都知道是c/c++里的硬骨头,但之所以硬,才有细嚼慢咽的理由,今天我们一起来分析分析指针的精髓。首先我们来科普一下关于指针的小常识:指针相关概念指针数组 【int *p[4]】是数组,是一个存放指针的数组数组指针 【int (*p)[4]】是指针,该指针有能力指向一个数组函数指针 【char* (*fun)(char* p1, char* p2)】是指针,该指针有能力指向一个函...原创 2018-05-18 23:20:19 · 850 阅读 · 2 评论 -
【C语言】浅析编译原理
致读者:提到“编译原理”,大部分人的首要反应就是苦恼。确实,编译原理这一部分的内容在计算机学习中是比较难以理解的一部分。首次接触编译原理,我也感觉很复杂,难以理解。但是当看过几次之后,对于一些简单知识点的理解就有点眉目了。在这里就将有点眉目的知识写一下。编译原理:要了解编译原理,首先,我们一起来来看看一个程序具体的编译过程吧。综上可见:● 组成一个程序的每个源文件通过...原创 2018-05-13 22:40:51 · 13052 阅读 · 0 评论 -
google开源 C / C ++项目代码规范
声明:本文摘录自谷歌开源项目开源指南。 详见------->谷歌开源项目开源指南。 google开源 C / C ++项目代码规范1.头文件每通常一个 .cc 文件都有一个对应的 .h 文件。也有一些常见例外,如单元测试代码和只包含 main() 函数的 .cc 文件。正确使用头文件可令代码在可读性,文件大小和性能上大为改观。下面的规则将引导你规避使用头文件时的各种陷阱。1.1。自包含...转载 2018-05-15 13:35:36 · 3782 阅读 · 0 评论 -
【C语言】让你不再害怕指针——C指针详解(经典,非常详细)
转载:https://blog.csdn.net/soonfly/article/details/51131141#commentBox前言:复杂类型说明要了解指针,多多少少会出现一些比较复杂的类型,所以我先介绍一下如何完全理解一个复杂类型,要理解复杂类型其实很简单,一个类型里会出现很多运算符,他们也像普通的表达式一样,有优先级,其优先级和运算优先级一样,所以我总结了一下其原则:从变量名处起,...转载 2019-07-23 17:17:03 · 617 阅读 · 0 评论