
C
C语言和C#相关知识和操作
咸鱼吐泡泡
这个作者很懒,什么都没留下…
展开
-
模拟实现strstr函数
strstr函数为字符串查找函数,char *strstr( const char *string, const char *strCharSet );该函数的功能是:返回字符串string中第一次出现strCharSet的地址,这里需要注意的是返回的是string字符串里面字串的地址,而不是返回strCharSet的地址,下面通过一个实列来认识strstr函数int main(){ char arr1[] = "abcdassasa"; char arr2[] = "sa"; print原创 2022-03-01 13:50:40 · 640 阅读 · 0 评论 -
用宏实现交换一个整数二进制中奇偶位的交换
写一个宏,可以将一个整数的二进制位的奇数位和偶数位交换我们知道任何一个数据在计算机中都可以用0和1表示,数字10在计算机中二进制表示为00000000 00000000 00000000 00001010现在我们要将该二进制数据中的奇数位和偶数位交换一下位置,我们假设右边第一个数字为奇数位,第二个为偶数位。则,交换以后就得到了下面的二进制数据00000000 00000000 00000000 00000101转换成十进制数就是5,那么我们怎样才能具体实现奇偶位的交换呐,下面继续看1原创 2022-02-26 16:45:46 · 593 阅读 · 2 评论 -
动态开辟内存版本的通讯录
#include "ab.h"//实现通讯录:通讯录可以用来存储1000个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址//1.添加联系人信息//2.删除指定联系人信息//3.查找指定联系人信息//4.修改指定联系人信息//5.显示所有联系人信息//6.清空所有联系人//7.以名字排序所有联系人enum number{ EXIT, ADD, DEL, SEEK, MOD, SHOW, EMPTY, SORT};void mean(){ printf(".原创 2022-02-24 15:00:01 · 359 阅读 · 0 评论 -
通讯录的实现
实现一个通讯录;通讯录可以用来存储1000个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址提供方法:添加联系人信息 删除指定联系人信息 查找指定联系人信息 修改指定联系人信息 显示所有联系人信息 清空所有联系人 以名字排序所有联系人下面是头文件部分#define _CRT_SECURE_NO_WARNINGS#define MAN_NAME 15 //定义名字数组中字符元素个数#define MAN_SEX 5 //定义性别数组中字符元素个数原创 2022-02-22 19:05:54 · 432 阅读 · 1 评论 -
分析返回栈空间地址问题
今天在做题的时候看到了这样一个题char* getmemory(void){ char p[] = "hellow beijing"; return p; }void test(void){ char* str = NULL; str = getmemory(); printf(str);}int main(){ test(); return 0;}该题运行的结果是:烫烫烫烫烫烫烫烫,我刚开始看见这个代码的时候觉得没有问题啊,但为什么原创 2022-02-20 19:52:10 · 1217 阅读 · 0 评论 -
模拟实现memmove函数
我们在使用memmove函数的时候,会疑问这个函数是如何实现的啦,为什么有了memcpy函数还要使用memmove函数啦,下面我们通过对该函数的模拟实现,来详细了解一下该函数到底是如何实现的,首先我们在MSDN上面看一下memmove函数信息通过上面的信息,我们照着模拟下面一个类似的函数#include <stdio.h>#include <assert.h>void* my_memmove(void* dis, const void* src, size_t c.原创 2022-02-19 15:39:53 · 568 阅读 · 0 评论 -
通过一个题来进一步理解指针
首先看题我们现在来分析,这个题的答案是怎么来的1.首先c是一个指针数组,数组里面有4个元素,每个元素的类型是char* ,cp是一个二级指针,也是一个指针数组,里面的元素从左到右依次是"FRIST"、"POINT"、"NEW"、"ENTER",cpp是一个三级指针,下面请看图片分析他们的对应关系现在看第一个printf,括号里面先是对cpp做自加运算,运算以后cpp就指向cp里面的c+2,**++cpp中第二颗*表示对自加运算以后的cpp解引用,拿到了c+2的地址,c+2指向的是c里面的原创 2022-02-18 00:16:31 · 436 阅读 · 0 评论 -
指针进一步详解
关于指针中*操作符的使用*操作符的作用是对指针解引用,也就是将指针中的内容提取出来但有时候我们看到的代码中,在对指针内容进行操作的时候好像可以不用*操作符,那什么情况不用呐正如图片中文字叙述的,在打印整体的时候,指针可以不加*操作符,打印数组中的某一个字符或者数字要加*操作符下面将介绍指针中几个重要的知识点1.数组指针数组指针也就是指向数组的指针,它和整型指针,字符指针一样都是指向某一个特定对象的。正如上面的例子显示的,arr是一个指向数组的指针,它的类型是int(*原创 2022-02-15 22:57:03 · 479 阅读 · 0 评论 -
看完这篇文章,指针就能掌握大概一半
对于初学C语言的大多数朋友,可能多少都在指针这绊过脚。比如我们看下面这段代码(一段代码里面的函数)是不是看着都很费劲。下面我们对指针进行简单了解一下。1.什么指针?指针是用来存放变量地址的。比如这里对变量a取地址——&a,我们就得到了一个地址0x012FF8C0既然是一个值,我们就可以定义一个变量来存储它,这个变量就叫做指针变量(存放地址的变量)。int* 就是指针类型,它和我们平时说的整型、浮点型、字符型等都一样,也有char*、short*等。只不过它是修..原创 2022-01-29 21:32:08 · 2356 阅读 · 0 评论 -
简单分析数据在内存中存储方式及顺序
我们都知道一个数或者字符只要输入了计算机,计算机就为这个数或字符开辟了存储空间。我们随便定义一个整型变量a=-10,可以看到对a取地址得到一个f6 ff ff ff的数据。 这里显然计算机是以十六进制存储的,那为什么展现出来的是这样的。这里要说明一下计算机存储数据都是以补码的形式存储的,对于正数,源码、反码、补码都相同。对于负数,这里以-10举例。源码:10000000 00000000 00000000 00001010反码:11111111 11111111 11111111 111原创 2022-01-29 19:09:09 · 2072 阅读 · 0 评论 -
写一个函数,可以逆序一个字符串的内容
结果如下:原创 2022-01-27 22:21:06 · 486 阅读 · 0 评论 -
求0~100000之间所有的水仙花数
“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如:153=1 ^ 3+5 ^ 3+3 ^ 3,则153是一个“水仙花数”//思路://1.先判断所求的数字有几位数//2.求该数各位数上每个数相应平方之和//3.判断是否为水仙花数...原创 2022-01-27 21:32:39 · 648 阅读 · 0 评论 -
如何新建一个C语言项目
新建C项目。原创 2023-03-03 23:13:30 · 226 阅读 · 0 评论