![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C
文章平均质量分 63
Time<EveryThing>
天总会黑,同样也总会亮。
展开
-
C语言—动态内存分配相关知识详解
一.前言我们之前编程时创建的一些变量,你知道它们都是存放在内存的哪里吗?其实,不同的类型的变量在内存中存储的位置是不一样的。一起来看一下:那么为什么要有动态内存开辟这一说呢?有时候我们需要的空间大小在程序运行的时候才能知道,那数组在编译时开辟空间的方式就不能满足了,这时候就需要我们的动态内存分配了。动态内存开辟主要要求我们了解和掌握四个函数1.malloc2.calloc3.realloc4.free二.动态内存函数详解及其使用2.1 m...原创 2021-11-28 12:57:03 · 466 阅读 · 0 评论 -
C语言之结构体(后续)(位段+共用体+枚举)
接上一篇~~走起目录一.位段二.枚举三.共用体(联合体)正文开始一.位段什么是位段呢?位段,C语言允许在一个结构体中以位(二进制位)为单位来指定其成员所占内存长度,这种以位为单位的成员称为“位段”或称“”位域“”。利用位段能够用较少的位数存储数据。(位段不具有跨平台性)位段的声明和结构体是类似的,但是有两个不太一样的地方1.位段的成员必须是int,unsigned int 或者signed int 类型。(同一个位段里的成员类型尽量保持一致)2.形.原创 2021-11-21 11:06:03 · 860 阅读 · 0 评论 -
C语言之结构体(内存对齐+位段+共用体+枚举)
我们之前学习过整型,字符型,浮点型....那么比如说我想要描述一个学生,这个学生有如下属性:学号,性别,选修课程。那我们该怎么声明这个类型呢?这时候就要用到我们自定义的类型——结构体目录一.结构体的基础知识1.1 结构体的声明 1.2 结构体的自引用1.3 结构体的重命名1.4 结构体变量的初始化二.结构体内存对齐2.1 内存对齐规则练习2.2 自定义对齐数2.3 offsetof函数三. 结构体传参...原创 2021-11-20 19:53:09 · 553 阅读 · 0 评论 -
C语言内存函数概述及其模拟实现(下)
一.memcpy函数打开c.plusplus.com看一下关于这个函数的基本使用方法使用方法:这个函数不仅仅可以拷贝整数,还可以是其他的类型呀~一起来看看接下来一起来模拟实现一下这个函数:函数参数原型:源码:#include<stdio.h>#include<string.h>#include<assert.h>struct S{ char name[20]; int age;...原创 2021-11-09 08:45:35 · 122 阅读 · 0 评论 -
栈的应用以及进制转换代码实现(C语言)
一.栈的应用(把二进制数转换成十进制数)原创 2021-11-08 14:50:45 · 1128 阅读 · 0 评论 -
C语言内存函数概述及其模拟实现(中)
今天来为大家介绍结果相较于上一篇更加灵活的内存函数也可以理解为是他们的升级版一.strncpy函数打开cplusplus.com查看该函数原创 2021-10-26 16:28:58 · 99 阅读 · 0 评论 -
C语言内存函数概述及其模拟实现(上)
一.strlen函数的实现strlen函数是用来计算字符串长度的打开cplusplus.com - The C++ Resources Network这里介绍三种模拟实现strlen函数的方法1.计数器方法int my_strlen(char *arr){ int count = 0; while(*arr = '\0') { arr++; count++; } retu..原创 2021-10-23 18:05:46 · 109 阅读 · 0 评论 -
指针笔试面试题讲解
读代码写出结果1. int a[4] = { 1, 2, 3, 4 }; int *ptr1 = ( int * )(&a + 1); int *ptr2 = (int *)((int)a + 1); printf("%x %x", ptr1[-1], *ptr2); 分析一下这串代码:在这里,我们分析清楚了ptr1 和ptr2指向的是哪里。接下来我们看看打印的这两个是什么样子的东西。看打印结果:2. char *...原创 2021-10-16 17:21:55 · 236 阅读 · 1 评论 -
(套娃篇下)C:奇妙的指针 回调函数机制+qsort函数排序(很强大)+qsort函数的模拟实现
一.qsort函数排序法引入:还记得我们之前学习的冒泡函数嘛?冒泡函数排序源代码://冒泡函数void Bubble_sort(int arr[], int sz){ int i = 0; int j = 0; for (i = 0; i < sz - 1; i++) { for (j = 0; j < sz - i - 1; j++) { if (arr[j] > arr[j + 1]) { int tmp = arr[j]原创 2021-10-10 23:53:08 · 136 阅读 · 0 评论 -
(套娃篇中)C:奇妙的指针 函数指针+函数指针数组+指向函数指针数组的指针
一.函数指针什么时候函数指针哇?没错, 就是指向函数的指针。函数也有地址的嘛?当然啦,当然啦,一起来看看看,这不就是函数的地址函数指针的写法详解:来验证一下:编译顺利通过,写法正确~~。...原创 2021-10-08 21:19:30 · 176 阅读 · 0 评论 -
(套娃篇上)C:奇妙的指针 指针类型+指针数组+数组指针+数组和指针的传参
一.什么是指针?指针其实就是个变量,这个变量里面存放地址。但是指针是有类型的,不同的指针类型决定了指针加减整数移动的步长。我们来看一段代码如果是char类型呢所以,你看,不同的指针类型决定了指针加减整数时候移动的步长double*改变的则是八个字节,我们可以自己去验证一下。二.指针类型2.1字符指针字符指针的类型一般为“ char* ”。这里是打印的结果:那么我们来验证一下pc里面存放的是不是pc的收元素的地址呢?...原创 2021-10-08 10:17:15 · 103 阅读 · 0 评论 -
C语言——优化后的冒泡排序法
冒泡排序法是我们接触到的比较经典的算法思想了。问题描述:我们要把9,7,8,6,5,4,3,2,1,0升序输出。#include<stdio.h>void paixu(int arr[] , int sz);int main(){ int i; int arr[] = {9,8,7,6,5,4,3,2,1,0}; int sz = sizeof(arr)/sizeof(arr[0]); //求出数组的长度 paixu(arr , sz);原创 2021-08-25 21:26:33 · 347 阅读 · 0 评论 -
C语言——汉诺塔问题(递归)
问题描述:有三根直杆X,Y,Z。X杆上有n只盘子,每次移动一块盘子,小的只能叠在大的上面,将所有盘子从X经由Y杆全部移动到Z杆上。原创 2021-08-24 10:45:48 · 219 阅读 · 0 评论 -
C语言——关于函数,指针和数组
一.1.1 指向函数的指针。int (*p) (int , int ) 这里*p是指针,指向的是一个函数{ int() (int , int ) }; 这个函数的两个参数是int型,返回值也是int型。1.2指向函数指针的数组。int (*p[4]) (int , int )这里要注意,“[] “比“*”,所以这里的p先和[]结合,是一个数组(这么通俗的说,只是为了方便理解)。所以这里 p[4] 是一个数组,指向的是一个函数指针{ int(*) (int , int..原创 2021-08-10 19:44:44 · 118 阅读 · 0 评论