热门 最新 精选 话题 上榜
@​​TOC​静态版本通讯录前期思路与之前的扫雷以及三子棋的实现方式是一样的,创建两个源文件,一个用来测试,一个用来存放函数定义,再创建一个头文件,用来存放函数声明。接下来是着手实现通讯录。 首先要有一个大概的框架,并且要明确即将实现的通讯录的功能,最基本的即增删查改,然后对这些功能进行进一步的细化实现,并且我们知道,人的信息是一个比较复杂的对象,不可能用一句话就概括,所以就用到了之前学过的结构体
原创 精选 8月前
329阅读
yyds干货盘点
【C版本】静态通讯录与动态通讯录的实现,以及各自所存在的缺陷对比。(含所有原码)
指针是什么?在计算机科学中,指针(pointer)编程语言的一个对象,利用地址,它的值直接指向存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它找到以他为地址的内存单元。我们可以这样理解电信号是有正电和负电,就相当于二进制的0和1。我们有三十二根通电线,就是三十二位,每一位产生一个数字就能对2^32个内存单元
在之前我们已经学过了,结构体类型的创建,初始化,和结构体的传参。那么下面我们就来学习一下1.结构体的特殊声明2.结构体的自引用3.结构体变量的定义和初始化4.结构体的内存对齐(极其重要)5.修改默认对齐数6.结构体的传参在学习完后我们还会讲解利用结构体完成位段,包括以下知识点。1.什么是位段2.位段的内存分配3.位段的跨平台问题4.位段的应用下面我们就来学习1.结构体的特殊声明下面我们我们来看一下
原创 精选 8月前
294阅读
结构体总结
1. 作用域上部分承接course-322. 作用域注意事项 2372.1 例public class Test33 { public static void main(String[] args) { T t1 = new T(); // 属性生命周期较长,伴随着对象的创建而创建,伴随着对象的销毁而销毁。 // 局部变量,生命周期较短,伴随着它的代码块的执行而创建,
形式:goto 表达形式;表达形式:————注意冒号表达形式:————可在任何位置比如:#include <stdio.h> int main() { //again: printf("wwwww\n"); goto again;//goto后面为again,还可换为其他形式,比如:a printf("hh\n"); again: printf("6666\n"); retu
原创 8月前
162阅读
本篇介绍C语言中的 b 开头的函数
原创 8月前
264阅读
C语言函数大全--b开头的函数
1.结构体的声明1.1结构的基础知识结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。数组则是一组相同类型元素的集合。1.2结构的声明生活中有很多很多的类型,像学生,老师,公务员,程序员等等等等,我们就以学生为例,描述一个学生,我们可以描述他的名字,年龄,性别,身高,体重,学号,成绩等等等等这就是结构体的基本结构,首先要写struct ,然后写你要声明的类型,接着大括号里
原创 精选 8月前
624阅读
自定义类型:结构体
在开始使用C语言编程之前,需要配置相应的开发环境。以下是一些常用的C语言开发环境的配置介绍:Windows 系统下的配置MinGW:MinGW 是一个在 Windows 平台下的 GCC(GNU Compiler Collection)环境,可以通过官网下载安装包并进行安装。安装完成后需要将 MinGW 的 bin 目录添加到系统环境变量 PATH 中,以便于在命令行中运行 gcc 和 g++ 命
题:在不创建第三个变量的情况下实现a=3,b=5,两个数的交换。int a = 3; int b = 5; printf("交换前:a=%d b=%d\n", a, b); a = a ^ b; b = a ^ b; a = a ^ b; printf("交换后:a=%d b=%d\n", a, b);上面为第一种方法,通过按(二进制)位异或‘^’实现。int a = 3; in
原创 8月前
220阅读
#include <stdio.h>#include <string.h>/*void print(int a){ int i = 0; printf("奇数位: \n"); for (i = 30; i >= 0; i -= 2) { printf("%d ",(a>>i)&1); } printf("\n"); printf
原创 8月前
111阅读
一、指针初阶:①指针是什么?a、指针是内存中一个最小单元的编号b、通常指的是用来存放内存地址的指针变量c、地址是唯一标示一块地址空间的d、指针的大小在32位平台是4个字节,在64位平台是8个字节二、指针类型①指针+-整数a、指针的类型决定了指针向前或者向后走一步有多大②指针的解引用a、指针的类型决定了,对指针解引用的时候有多大的权限(能操作几个字节)b、指针的类型决定了,目标数据将作为什么类型进行
原创 8月前
217阅读
2点赞
1. 指针是什么?指针是什么? 指针理解的2个要点:1. 指针是内存中一个最小单元的编号,也就是地址 2. 平时口语中说的指针,通常指的是指针变量,是用来存放内存地址的变量总结:指针就是地址,口语中说的指针通常指的是指针变量。那么想要学习指针,先得了解内存 内存是存储区域:指针变量我们可以通过&(取地址操作符)取出变量的内存起始地址,把地址可以存放到一个变量中,这个变量就是指针变量int
可以说,三个多月的时间里,40 余场面试,都浓缩在这 6262个字里了。
一、题目:求a,b,c的值nt main(){ int a, b, c; a = 5; c = ++a;//c=6,a=6 b = ++c, c++, ++a, a++;//c=8,a=8,b=7 b += a++ + c;//a=9,b=23,注意先使用后++ printf("%a=%d b=%d c=%d:\n", a, b, c); return 0;}注意:1、a++,++a
文章和代码已经归档至【Github仓库:​​algorithms-notes​​】或者公众号【AIShareLab】回复 算法笔记 也可获取。树状数组注意:树状数组的坐标一定要从1开始!树状数组的应用主要是:快速(在O(logn)的复杂度内):在某个位置上加上一个数(单点修改)求某一个的前缀和(区间查询)其他的变式都是由这两个基本功能转换而来,例如单点查询,区间修改等等。它与纯前缀和的区别在于可以
一、构造函数不能声明为虚函数 为什么构造函数不能声明为虚函数呢? 1、构造一个对象的时候,必须知道对象的实际类型,而虚函数是在运行期间确定实际类型的。如果构造函数为虚函数,则在构造一个对象时,由于对象还未构造成功,编译器还无法知道对象的实际类型,是该类本身还是派生类。无法确定。 2、虚函数的执行依赖于虚函数表,而虚函数表是在构造函数中初始化的,即初始化vptr,让它指向虚函数表。如果构造函数为虚函
本期的链表继续进行,上期我们完成了链表的增加和删除。现在接下来,我们进行链表的查改与优化头文件“SList.h”#include <stdio.h>#include <assert.h>#include <stdlib.h>typedef int SLTDataType;typedef struct SListNode{ SLTDataType data;
原创 精选 8月前
304阅读
数据结构-->链表_02
c++之STL list接口介绍
原创 精选 8月前
1346阅读
1点赞
yyds干货盘点
C++之STL list部分接口介绍
首次书写链表有关的知识,先来明确什么是链表?链表是一种物理存储结构上非连续,非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的举一个形象化的现实生活中的例子  :> 老式的绿皮火车,车厢由链条,钩子链接在了一起!!而链表也类似,只不过,链表是通过指针的指向有次序的链接在了一起!!每一个链表可存储一个数据,并且存储着下一个链表节点的地址!!如下图所示 :>由上
原创 精选 8月前
413阅读
数据结构-->链表_01
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #include<string.h>//参数是数组的形式 print1(int arr[3][5], int x, int y)//这里数组名传参,这里放数组形式 { int i = 0; int j = 0; for (
原创 8月前
108阅读
前期实现了顺序表中的尾插功能,主要是初次写,用时长,并且分析过于仔细!!下面接着前期内容进行补充---->增删查改头文件 “Seqlist.h”#include <stdio.h>#include <stdlib.h>#include <assert.h>#define INC_CAPCITY 3 //容量大小#define INC_MAX
原创 8月前
96阅读
数据结构-->顺序表__02
前言(栈区、堆区、静态区)请耐心看完,看完后就会对内存中的空间划分有了更深刻的认识!我们知道,任何一个变量的创建都会向内存申请空间用来存放,而在内存中的空间又划分为几个区域、最主要划分为:栈区、堆区、静态区而我们平常创建变量或者数组,如下:int a=0;int arr[1000];这里的a与arr都是在栈区开辟空间的,而​​栈区的特点之一就是出了作用域就会自动销毁​​​,所以它们的生命周期只要出
#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>void bubble_sort(int arr[], int sz){ int i = 0; for (i = 0; i < sz - 1; i++) { int j = 0; for (j = 0; j < sz - 1 - i; j++) {
原创 8月前
98阅读
c代码实现冒泡排序
常见题目类型:先看两道相同类型题目。这两道题的相同之处在于都是变化字符串的顺序,但其中某些部分按原来位置不变。解题思路:按照旋转数组进行解答。首先将后k个逆置,再将前n-k个逆置,最后整体逆置。即可得到答案。三步逆置也就体现了算法的核心思维,也就是三步翻转法。注意三步翻转法,无论是先整体逆置还是后整体逆置,效果是一样的,都翻转了两次算法实现:上述需要创建一个逆置函数,便于调用。只需要给出逆置的范围
不知不觉C++STL教程系列已经第7期了。之前我们介绍过:vector, queue, stack, set, map等等数据结构。 今天我们来学习一个新的stl容器:priority_queue优先队列。 ? 作者:Eriktse ? 简介:19岁,211计算机在读,现役ACM银牌选手?力争以通俗易懂的方式讲解算法!❤️欢迎关注我,一起交流C++/Python算法。(优质好文持续更新中……)?
结构体一. 前言平时老听到有小伙伴说结构体真的好难好难,根本就看不懂讲的什么意思!!!不要担心,这篇文章带你解决结构体问题。二. 结构体定义和使用结构体的概念:结构体属于自定义的数据类型,允许使用者存储不同的数据类型语法:​​struct 名字 { 结构体成员 };​​通过结构体创建变量的方式总共有三种:struct 结构体名 变量名 = { 成员1值 , 成员2值...}定义结构体时创建变量st
内存函数和字符串函数相比更加灵活,模拟实现内存函数也可以加深对于内存的理解,今天我们就来介绍一下三个常见的的内存函数吧。1.memcpy(内存拷贝函数)函数memcpy从source的位置开始向后复制num个字节的数据到destination的内存位置;这个函数在遇到'\0'的时候并不会停下来;如果source和destination有任何的重叠,复制的结果都是未定义的memcpy函数还是比较好理
原创 8月前
170阅读
【内存函数的介绍】->memcpy、memmove、memcmp
一、灵活性:      做开发已经十多年了,也接触过别的开发语言C#、JAVA、Go、Python,C和C++最大的特色就是指针了,用指针可以任意类型的指针转成想要类型的指针,就是这种灵活性,要注意的问题很多:       1、读取和写入不用超出原类型内存块边界,不然很大可能程序就崩溃了;     
c++
原创 8月前
59阅读
s3配置创建用户radosgw-admin user create --uid cjid --display-name cj返回: "user": "cjid","access_key": "77SH7KHBF310F4NTIA3A","secret_key": "THxUb5kcWBObET3LwkR0ObVjgzzzf28czqp161Nj"安装s3cmdyum install s3cmd修改
原创 精选 8月前
829阅读
Ceph object Gateway 之 S3 API
之前我们介绍过vector, queue, stack,map,set,今天我们介绍另外一个stl容器:bitset。 ? 作者:Eriktse ? 简介:19岁,211计算机在读,现役ACM银牌选手?力争以通俗易懂的方式讲解算法!❤️欢迎关注我,一起交流C++/Python算法。(优质好文持续更新中……)? ? 个人博客:www.eriktse.com 本文仅从入门和实用角度进行讲解,主要针