手把手学C语言
文章平均质量分 68
c语言的学习
执久呀
你若盛开,清风自来
展开
-
用c语言初级实现计算器
#include<stdio.h>#include<stdlib.h>void menu(){ printf("********************************\n"); printf("*******1.加法 2.减法 ********\n"); printf("*******3.乘法 4.除法 ********\n"); printf("********** 0.退出 **************\n");}v原创 2021-09-04 10:13:42 · 402 阅读 · 13 评论 -
指针的解析
——、什么是指针?指针相当于一个指示牌---指引你去找到某个地方,我们存储的数据内存中有一个地址,这个地址是唯一的,指针的作用就是带我们去找到这个地址。二、变量的创建和地址如图变量(int)+变量名(a)就可以创建变量了,int a,int b,在内存中申请了空间(4字节),a,b分别有不同的地址。例如1、2两个同学去了两个不地方,这两个地方a、b就是1、2所在的位置。三、指针的类型我们要根据变量来使用变量的类型,如char a='c',创建了一个字符变量,变量名是a(注:字符要用单引号''原创 2021-09-04 10:54:34 · 321 阅读 · 36 评论 -
qsort函数排序
标题qsort函数排序qsort是库函数要引头文件#include<stdlib.h> qsort有四个参数,qsort(arr,sz,sizeof(arr[0],my_cmp);第一个参数是起始位置(一般用数组名)第二个参数是数组有多少个元素,一般用int=sz=sizeof(arr)/sizeof(sizeof(arr[0]);sizeof(数组名)求出数组的大小,单位是字节,sizeof(arr[0])这是求出第一个的大小,事实上求数组中的哪一个元素都可以,因为数组是一类相同类型的集原创 2021-09-04 10:59:35 · 261 阅读 · 15 评论 -
结构体大小计算
在c语言中,要定义一个复杂对象比如说一个学生,用普通的变量是不可能定义完成的,所以这就有了我们的结构体,结构体就是是用来说明一个复杂对象的,所以结构体大小计算也成了重点。那我们应该怎么去计算结构体的大小呢,下面直接超级详细为你解答。举例一个结构体:struct st{char name;int age;double money;}s;结构体的大小计算有以下几条规则:1.结构体的第一个成员放在偏移量为0的位置如图:2.后面的变量放在对齐数整数倍上(对齐数一般是...原创 2021-09-04 11:19:01 · 1443 阅读 · 8 评论 -
动态内存管理(上)
1.为什么会有动态内存管理我们都知道申请内存有两个方法 ,1.变量加变量名如 int a=10;这就向内存内存中申请了四个字节的空间用来存放a的地址。2.变量名加数组名如 char arr[10]={0};这就向内存中申请了10个字节的空间用来存放数组arr的地址。上面这两种方式有一定的局限性,如我们创建了一个int arr[10],后续发现我有30个元素,这样就存放不了,反之也是一样的道理。但是有些小伙伴初学的时候容易写成下面的代码,以为做到了想多少输多少,其实是...原创 2021-09-05 09:47:21 · 1367 阅读 · 14 评论 -
动态内存管理(下)
动态函数的介绍:malloc free calloc realloc三、calloc函数函数的参数形式: void* calloc(size_t num , size_t size ) 其中void*是一个可以接受任意类型的指针,size_t表示的是unsigned int(无符号整型)...原创 2021-09-05 22:27:49 · 1720 阅读 · 16 评论 -
经典的动态内存错误(上)
一、前言 我们在使用动态内存函数申请内存空间时,需要注意许多细节如函数的返回值,所申请空间的释放等等,我们要是忽略这些细节就容易造成程序崩溃、内存泄漏、非法访问等等一些程序问题。二、内存错误的类型1.未判断动态内存函数的返回值造成非法访问#include<stdio.h>#include<malloc.h>#include<stdlib.h>int main(){ int *p=(*int)malloc(10*s...原创 2021-09-06 17:53:51 · 359 阅读 · 7 评论 -
你知道的----qsort函数排序
目录:一、 qsort函数介绍二、qsort的四个参数解读三、qsort函数具体例子:这篇之前发过了,介于许多小伙伴反馈的排版问题,现已将此排版重发了一、 qsort函数介绍qsort是库函数要引头文件#include<stdlib.h> 参数形式: qsort(arr,sz,sizeof(arr[0],my_cmp);二、qsort的四个参数解读第一个参数:是起始位置(一般用数组名)第二个参数:是数组有多少...原创 2021-09-07 07:18:53 · 892 阅读 · 29 评论 -
经典的动态内存错误(下)
上篇:(3条消息) 经典的动态内存错误(上)_执久呀的博客-CSDN博客原创 2021-09-07 18:37:51 · 272 阅读 · 37 评论 -
手撕大厂出现的过的一些笔试题---------动态内存函数题
第一题://问:下面test函数会输出什么#Include<stdio.h>#include<stdlib.h>void GetMemory(char*p){ p=(char*)malloc(100);}void test(void){ char*str=NULL; GetMemory(str); strcpy(str,"hello world"); printf(str);}int main(){ test();}原创 2021-09-08 19:39:50 · 1399 阅读 · 34 评论 -
你可能没听过的数组-----柔性数组
一、简述柔性数组其实是结构体中的最后一个数组未说明大小,且结构体中至少包含一个以上其他类型,如#include<stdio.h>struct hei { int zeng;char shi; int arr[];//或者int arr[0];}ma;int main(){struct hei ma;return 0}二、具体使用#include<stdio.h>#include<stdlib.h>//#inclu原创 2021-09-09 18:34:14 · 2649 阅读 · 15 评论 -
字符串函数的使用以及模拟实现(一)
一、前言 字符串函数也是库函数,他给我们日常编程提供了极大的帮助,所以我们必须认识并且学会这些函数的使用。(头文件是string.h)二、strlen函数函数的参数形式 size_t strlen(const char* str);size_t表示的是无符号数,const放的位置表示*str所指向的内容不可以被改变。具体实现如下...原创 2021-09-10 21:14:50 · 521 阅读 · 18 评论 -
字符串函数的使以及模拟实现(二)
前面我已经介绍了strlen strcpy的字符串函数的使用(24条消息) 字符串函数的使用以及模拟实现(一)_执久呀的博客-CSDN博客原创 2021-09-11 09:56:00 · 466 阅读 · 12 评论 -
字符串函数的使用和剖析(三)
五、strstr函数(查找字符串)参数形式const char*strstr(const char*str1,const char*str2)函数的特点:用一个指针去接受他的返回值,若查找成功则会返回一个指向一开始子串所在的位置,之后就从子串所在的初始位置开始打印,如在abcdefg中找子串cd,则会返回c所在的地址,并且从c的地址开始打印,所以结果是cdefg,若是有多个子串出现在主串上若查找失败,则会返回一个NULL。函数的使用:#include<stdio.h>原创 2021-09-12 14:40:06 · 1171 阅读 · 18 评论 -
字符串函数的使用和模拟实现(四)
一、前言 前面我们介绍过了strcpy、strcat、strcmp但是这些函数遇到'\0'才会停止,这些函数不会顾及目的地内存空间的大小,只会一直使用直到遇到\0,所以这些函数是不安全的(常会发生越界访问,和非法访问)。二、strncpy strncat strncmp函数介绍1.strncpy函数函数的参数形式char *strncpy(char*destination,const char *source,size_t num)其中size_t表示的是无...原创 2021-09-13 17:23:43 · 769 阅读 · 34 评论 -
类字符串函数---内存函数的使用以及模拟实现(上)
一、前言 前面我们已经学习了字符串函数的使用和模拟实现,不过现在字符串函数的使用要告一了。现在我们学习新的一篇内存函数的(和以前讲的malloc没有一毛钱关系),他们也是隶属于字符串类型里的(头文件也<string.h>),但是他们的使用方式和字符函数基本不同,所以我就把它们单独分开来,内存函数的使用单位是内存,所以他没有类型的限制,故他可以设置任意类型的数据,比字符串函数要好许多,这也是字符串函数的局限性。二、本节重点1.memcp...原创 2021-09-14 20:15:58 · 374 阅读 · 20 评论 -
类字符串函数---内存函数的使用以及模拟实现(下)
目录一、前言二、 memmove和memcmp函数1.memmove函数(内存移动)函数的使用:memmove函数的模拟实现2、memcmp函数(内存比较)函数的使用:一、前言 前面我们已经讲了memcpy和memset函数的使用,相信小伙伴们对这两个函数已经非常熟悉了,(如果还不是很熟悉,可以看看上篇)那么我们现在要学习另外两个函数memmove和memcmp。本章内容memmove和memcmp函数二、 memmo...原创 2021-09-15 18:15:05 · 499 阅读 · 29 评论 -
详解strlen和sizeof在数组的中的使用(一)
一、前言 前面我们学习了字符串函数的使用,不过呢字符串函数也基本结束了,现在呢我们来讲点不一样的东西,有关于sizeof和strlen的使用二、sizeof和strlen他们各自是是什么?有什么区别?1.sizeof是一个操作符,不需要引头文件,形式一般是sizeof(变量或表达式),计算的是 所占的空间大小。单位是字节,所以他可以计算任意类型的大小。2.strlen我们相当熟悉,strlen是字符串函数,要引出头文件<string.h>,...原创 2021-09-16 21:00:19 · 1207 阅读 · 18 评论 -
详解strlen和sizeof在数组中的使用(二)
一、前言 前面我们已经提到了sizeof在整形数组的使用,因为strlen只能在字符数组中使用,所以上一 没涉及strlen,那么这篇将开启,可能会迟到,但是不会缺席。其实在数组的使用考得挺频繁的一般会出现一个字符数组然后呢,给出sizeof和strlen求数组长度,考点在于\0是计算到了,这类题目较为简单,在一维数组简单些,在二维数组略难一点点,在三维数组.......好啦,废话不多说咱们,直接进入正题。二、sizeof在字符数组中的题...原创 2021-09-17 13:49:04 · 6153 阅读 · 11 评论 -
详解strlen和sizeof在数组中的使用(三)
一、前言前面我们使用了sizeof的使用,那么现在我们开始strlen的使用,对于strlen我们都知道,只能用来计算字符串的长度。二、有关strlen的常见试题原创 2021-09-18 17:30:25 · 648 阅读 · 20 评论 -
详解strlen和sizeof在数组中的使用(四)
目录一、前言二、sizeof在指针中的试题:解析:vs编辑器验证:32位平台:64位平台:一、前言前面一节我们已经讲过了有关于strlen在字符数组中的使用,以及strlen使用时候的注意事项譬如只能在字符数组中使用,遇到'\0'才会停止,传过来的是地址,传值会出错等等之类的,不太清除的小伙伴可以往回翻翻看看。那么废话不多说,咱们今天要讲的是sizeof在指针的使用。二、sizeof在指针中的试题:#include<stdio..原创 2021-09-19 17:15:18 · 2523 阅读 · 35 评论 -
详解strlen和sizeof在数组中的使用(五)
目录一、前言二、sizeof在二维数组的试题解读:题解:答案验证:64位平台下:32位平台下:一、前言前面我们详细讲了sizeof和strlen中的使用,基本涉及了所有一维数组可以和常见的题目类型那么现在我们就将一维数组告一段落了,现在我们来开始讲解在二维数组的使用了,本篇是sizeof和strlen的最后一篇了。二、sizeof在二维数组的试题#include<stdio.h>int main(){ ...原创 2021-09-20 20:56:06 · 864 阅读 · 59 评论