![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c语言
芥末味鸭肠
这个作者很懒,什么都没留下…
展开
-
sizeof与strlen的区别及例题解析
sizeof:计算数组长度,返回的是变量声明后所占的内存数,不是实际长度,此外sizeof不是函数,仅仅是一个操作符,该类型保证能容纳实现所建立的最大对象的字节大小。strlen:strlen在C语言中是string标准库中的函数,但其本质是一个计数器,从程序员给的任何位置开始计数,直到遇到\0,便结束然后返回计数器的值例题代码解析:#include <stdio...原创 2019-09-19 11:46:49 · 676 阅读 · 0 评论 -
C语言中程序在内存中的分段
当程序开始运行后,会加载到内存中,会把内存分成若干个段,每一段的功能和权限不同。代码段:通常是用来存放程序执行代码的的一块内存区域,该段的权限是只读权限,存放的是二进制指令、常量、具有const属性且被初始化过的全局变量和静态变量、字符串字面值。只读段:存放一些只读的数据,有字符串字面值数据段:用来存储被初始化过的全局变量和静态变量BSS段:用来存储未被初始化过的全局变...原创 2019-09-19 11:04:41 · 748 阅读 · 0 评论 -
面试题(四、谈谈对指针的看法)
什么是指针:指针是一种数据类型,使用它定义的变量叫作指针变量,一般这种指针变量占4|8个字节内存大小。为什么使用指针:1、函数之间不能共享变量:函数之间传参是值传递,因此不能共享变量,函数之间的命名空间是独立的,但是存储空间是统一的,可以把存储的地址在函数之间传递,达到共享的目的。2、堆内存无法取名字,只能与指针配合使用3、优化函数之间的传参,会随着要传递的参数的字节数增加...原创 2019-09-02 20:54:23 · 494 阅读 · 0 评论 -
浅谈new/delete与malloc/free的用法及区别联系
目录一、在C++中内存主要分为5个存储区:二、new/delete的用法三、malloc/free的用法四、new/delete与malloc/free的相同点与不同点:一、在C++中内存主要分为5个存储区:栈(Stack):局部变量,函数参数等存储在该区,由编译器自动分配和释放.栈属于计算机系统的数据结构,进栈出栈有相应的计算机指令支持,而且分配专门的寄存器存...原创 2019-08-20 20:10:39 · 730 阅读 · 0 评论 -
TCP/UDP协议的C/S模型
努力学学习Linux编程的我,来分享一下TCP/UDP的C/S模型嘻嘻首先是基于TCP协议的C/S模型客户端代码如下:#include <stdio.h>#include <unistd.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h&g...原创 2019-08-14 22:39:12 · 381 阅读 · 0 评论 -
数组与链表的区别
:**数组的特点:1、在内存中数组是一块连续的区域2、数组在使用前要事先预定好大小,不然会浪费内存,静态数组由栈分配,动态数组由堆分配3、查找效率高,因为数组是连续的,知道每一个元素的内存地址,可以直接找到给出地址的元素4、插入元素与删除元素效率低5、不利于扩展6、内存空间要求高****数组的优点:1、查找元素效率高2、内存空间占有的少****数组的缺点:1、插...原创 2019-08-13 23:12:57 · 124 阅读 · 0 评论 -
数据结构与算法之冒泡排序
励志成为程序员的小白又来啦!这次要分享的是算法中的几种常用排序。首先这次我们要分享的是最经典的冒泡排序…冒泡排序:它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端(升序或...原创 2019-07-25 20:45:46 · 123 阅读 · 0 评论 -
数据结构与算法之快速排序
这次我要分享的是算法中的另一种排序:快速排序快速排序可以说是排序当中大部分情况下效率最高的排序算法。快速排序(Quicksort)是对冒泡排序的一种改进。快速排序由C. A. R. Hoare在1960年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行...原创 2019-07-25 20:51:45 · 150 阅读 · 0 评论 -
数据结构与算法之堆排序
这是我最近几天写排序的最后一个算法排序了我觉得这个堆排序和归并排序可以说是这几个算法中写起来最困难的代码了。堆排序:是指利用堆这种数据结构所设计的一种排序算法。因为堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点,所以建堆就和建树一样,必须建好堆再进行排序。堆排序的时间复杂度为:O(nlog2n),是一种不稳定的排序算法代码思路:首...原创 2019-07-27 15:12:07 · 146 阅读 · 0 评论 -
数据结构与算法之选择排序
接下来要说的便是选择排序工作原理:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。选择排序的时间复杂度是O(n^2),是一种不稳定的算法算法实现:1、假设确定最后一个数据为最大值2、从头开始遍历这串数据,如果找...原创 2019-07-27 15:01:03 · 107 阅读 · 0 评论 -
数据结构与算法之插入排序
今天要分享的是前两天写的排序的后几个首先是插入排序:插入排序的稳定性是稳定的,时间复杂度与冒泡排序一样:快的话是O(n),慢的话是O(n^2)插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外(让数组多一个空间才有插入的位置),而第...原创 2019-07-27 14:56:04 · 133 阅读 · 0 评论 -
C语言设计的简单2048小游戏
//***************************************************************************////**************************刚学代码的小白************************************////想必大家小时候或者现在都玩过2048这款小游戏//在此我用从学习c语言到现在所学知识简...原创 2019-07-13 14:41:21 · 892 阅读 · 1 评论 -
C语言设计的简易电话簿
#include <stdio.h>#include <stdbool.h>#include <string.h>#include <stdlib.h>#include <getch.h>typedef struct Contact{ //定义联系人结构体 char name[20]; //姓名 char sex; /...原创 2019-04-27 14:05:42 · 689 阅读 · 0 评论 -
C语言中字符串输入时残留回车符的解决
当先输入整数时再输入字符数据时,输入整数时的回车符会残留下来,影响字符的输入解决方法:1.调整输入的顺序,先输入字符,在输入整数。2.scanf("%[^\n]");**scanf("%c"); //必须在确定有垃圾数据的情况才能使用,否则必须补一个回车符。3.stdin->_IO_read_ptr = stdin->_IO_read_end;//把输入缓冲区当前位置指针...原创 2019-04-27 13:18:05 · 4695 阅读 · 0 评论 -
switch case开关语句的坑
由于之前写的switch case 都是case语句后面有break的,因此也没有注意到一个知识点就是若case语句后面没有加break的话,会继续执行以下的case语句,不管是不是与条件相符,直到遇到第一个break才跳出switch结构例题:#include <stdio.h>#include <string.h>int main(){ int...原创 2019-09-19 12:57:45 · 1232 阅读 · 0 评论