
c语言
michealoven
变成小菜鸟,正在努力学习,终将搏击长空
展开
-
else 悬挂--C语言陷阱
今天遇到一个很奇怪的问题, 下面的代码我觉得会什么都不输出,但不幸的是却输出了x。经过分析我觉得可能编译器在编译的时候,自动给缩进了,应该不会是别的原因。 if( 1 < 2) if(3 <2) cout << "ok" << endl; else cout << "x" << endl;...原创 2021-07-17 16:48:58 · 187 阅读 · 0 评论 -
C语言数组与指针
总结一下C语言中的数组与指针首先先弄明白数组指针与指针数组指针数组指的是一个元素为指针的数组,数组指针指的是指向数组的指针。 // 普通数组 int a[] = {1, 2, 3, 4, 5}; // 指针数组 int* p[5]; // 数组指针 int (*p)[5] = &a;区分一下数组名与数组名取地址输出内容相同是因为两个指针存放内容均为数组第一个元素的地址,但是两个指针指向类型不同,因此拥有不同的偏移量。 int a[] = {1, 2, 3, 4};原创 2021-06-17 15:22:38 · 214 阅读 · 0 评论 -
C语言参数压栈顺序例子
转载自春夜喜雨 http://blog.youkuaiyun.com/chunyexiyu#include <stdio.h>int main(){ int arr[] = {1,2,3,4}; int* ptr = arr; printf("%d,%d", *ptr, *(++ptr)); return 0;}输出结果为 2,2原因是函数的参数入栈顺序为自右向左,因此先入栈*(++ptr),再入栈 *ptr。...转载 2021-03-06 19:29:02 · 210 阅读 · 1 评论 -
最大流--最小割(附C++实现)
文章目录最大流 最小割问题方法,BFS/DFS + 构造反向图,直到得到最小S-T割(即不存在从S割到T割的有向边)最大流 最小割问题问题定义:有向图中,某一点流向另外一点的最大流量,有向边的权值表示通过这条边的最大流量最大流问题其实属于一种优化问题,类似的如最短路径也是属于一种优化问题具体可参考B站 理解最大流/最小割定理(蒋炎岩)最后得出的推论–也是解决本问题的方法我的总结:将有向边的流量大小理解为节点之间的路径个数(平行边),最大流问题,即为找出起点与终点之间路径的个数。方法,原创 2021-02-13 21:10:25 · 910 阅读 · 0 评论 -
C语言-高\低地址 高\低字节 大小端序 大小端序数据转换
文章目录本篇文章分为四个部分高低地址高低字节大小端序大小端序数据转换本篇文章分为四个部分高低地址计算机按照字节寻址,每一个地址指向内存中的一个字节。在下图中,每一个色块表示内存中的一个字节,箭头处表明了其在内存中的地址。图中地址位32位,说明为32位机器。0x00000000位低地址,0x00000002相对为高地址。高低字节高低字节与内存中的位置无关,描述的是数据中字节的权。例如int i = 0x00000a0b;0a 这个字节为高字节,0b这个字节为低字节,原因是0a所处的位置权较原创 2021-02-10 16:18:53 · 2273 阅读 · 0 评论 -
C语言-指针存储空间大小
如果提到C语言指针大小,估计大家都会说是4个字节,但是是否真的如此呢?int* pa = NULL;printf("%d\n", sizeof(pa));在我的机器上的输出结果为8(字节),为什么不是4呢实际上指针的存储空间大小与计算机的字长有关(32位或64位)计算机字长:计算机一次所能处理的数据的最大长度。指针:指针的实际上存储的是地址因此32位机器的指针长度应为32位(4字节),64位机器的指针长度应为64位(8字节)...原创 2021-02-09 14:07:42 · 2255 阅读 · 5 评论 -
C语言-纯c实现泛型栈
Stack.h//// Created by Administrator on 2021-2-8.// 自定义泛型栈//#ifndef GLOB_TEST_STACK_H#define GLOB_TEST_STACK_Htypedef struct{ // 空间大小 int _capacity; // 元素个数 int _size; // 元素大小 int _element_size; // 模拟栈的数组 void* elem原创 2021-02-09 01:46:00 · 317 阅读 · 0 评论 -
C语言-内存对齐
这里写自定义目录标题c语言结构体的内存对齐结构体定义typedef struct{ int _capacity; int _size; int _element_size; void* element_arr;}Stack;sizeof输出大小,大小为24(64位机器)print("%d\n", sizeof(Stack))int 类型大小为4(字节), void*(空类型指针)大小为8(指针的存储大小再另一篇博客中细说), 简单相加结果为22,但为什么是24呢?原创 2021-02-09 01:44:35 · 139 阅读 · 1 评论 -
C语言中的void*
void*void* 是无类型指针,无类型指针无法完成解引用与算术运算(因为不知道到底指向什么类型)作为函数的参数时,可以接受任意类型的指针void fun(void* p){ //}// 调用方式int i;short s;double d;fun(&i);fun(&s);fun(&d);...原创 2021-02-04 14:40:46 · 206 阅读 · 0 评论 -
C语言-纯C实现的泛型函数
c++中的泛型算法实现借助了模板,在c语言中也可以实现类似功能算法示例 swap 交换两个参数的值int 类型的交换void swap(int* pa, int* pb){ int tmp = *pa; *pa = *pb; *pb = tmp;}泛型的实现前提:交换的两部分需要是同一数据类型,例如int与int,float与float编译器并不知道交换的两部分分别是什么数据类型,所以需要传入一个内存大小(字节数),将两个内存空间的位模式(bit pattern)进行交换原创 2021-02-04 14:21:29 · 285 阅读 · 0 评论 -
最近写cpp遇到的一些问题
STL sort算法的参数 cmpcmp中需要使用弱排序,对于单个元素排序(不能是a <= b)bool cmp(int a, int b){ return a < b;}二维比较bool cmp(const vector<int> a, const vector<int>& b){ if(a[0] != b[0]) return a[0] < b[0]; else return a[1] < b[1];}grp原创 2020-12-17 14:55:23 · 342 阅读 · 0 评论 -
git v_0.99 README翻译
git v_0.99翻译GIT - the stupid content tracker简介object databaseGIT - the stupid content trackergit 是一个愚蠢的内容追踪器简介This is a stupid (but extremely fast) directory content manager. It doesn’t do a whole lot, but what it does do is track directory contents e原创 2020-12-19 20:49:19 · 142 阅读 · 0 评论 -
Ubuntu CLion初体验
第一次尝试在ubuntu上使用CLion安装过程遇到的问题安装过程很简单,ubuntu应用商店安装遇到的问题不能编辑文件这个问题我的第一反应是权限不够,因为我不是使用root用户启动的程序所以我就想找到他的启程序,用root用户启动// 寻找clion的启动程序find / -name clion*// 进入目录cd xxxx// 以root用户启动sudo ./clion.sh大功告成!...原创 2020-11-11 23:18:42 · 401 阅读 · 0 评论 -
C语言-memset
memset辨析之前一直对memset搞不清楚,只知道memset设置的值为0肯定没问题今天就来啃一啃它先贴源码 void* cb_memset(void* buffer, int b, size_t size){ assert(buffer!=NULL); char* retAddr = (char*)buffer; while (size-- > 0){ *(retAddr++) = (char)b; } return retAddr; }原创 2020-08-21 23:26:18 · 211 阅读 · 1 评论 -
用C语言实现的学生管理系统
用C语言实现的学生管理系统可以输入学生的学号,姓名,年龄,年级;可以输入学生的学号,姓名,年龄,年级;插入学生信息,默认插入到第一个通过学号,对学生进行排序由于自己学C语言指针时,不太认真,所以有这个作业时,遇到了很多困难,不过最后还是写出来了,很高兴#include <stdio.h>#include <stdlib.h>#include<malloc.h>#include<str原创 2017-10-14 19:47:10 · 1143 阅读 · 1 评论