- 博客(20)
- 收藏
- 关注
原创 指针+1和指针++区别以及数组名++与数组名+1区别
指针p+1其实并没有对p进行赋值操作,并没有改变指针p的指向,p依旧指向原来的元素,指向下一个元素的是p+1看下面的代码,p+1并没有累计给下一次循环的p;也就是没改变p的指向p++对指针进行了赋值操作,相当于p=p+sizeof(p的基类型);改变了p的指向,看下面代码,p++的值累计给了下一次循环数组名++int arr[]={0};arr++;编译器会报错,为什么?数组名是指针常量,而++是赋值操作,常量不能进行赋值操作,所以报错数组名+1int arr[]={0};arr+1;编译器不会
2022-06-03 21:18:15
1838
原创 模拟几个简单函数记录
递归模拟strlen#include<assert.h>size_t mock_strlen(const char*arr){ assert(arr != NULL); if(*arr!='\0') { return mock_strlen(arr+1) + 1; } else { return 0; }}int main(){ char arr[] = "how are you"; printf("%d\n", mock_strlen(arr)); r
2022-05-27 00:55:41
131
原创 常量。。。。
指针常量int main(){ int a = 10; &a = 20;//地址是常量 10 = 20;//常量不能修改 &10 = 20;//常量不能修改 char arr[] = { 0 }; arr = "hehe";//地址是常量 return 0;}指针变量void mock_strcpy(char*arr1,char*arr2){ *arr1 = *arr2;}int main(){ char arr1[] = { 0 }..
2022-05-25 11:48:12
94
原创 二维数组灵感记录
今天看了一道二维数组的数组名传参问题的题int main(){ int arr[3][5] = { 1,2,3,4,5,6,7,8,9 }; print_arr(arr);//传参 return 0;}void print_arr(形参){}发现 形参的创建给出的是int (*arr)[5]void print_arr(int(*arr)[5]){}一时思考,既然数组名代表首元素地址,那为什么传递数组的地址,但也是地址,为什么不能用一级指针char*arr
2022-05-24 21:00:08
80
原创 如何做到不创建第三个变量,交换两个数的值
在日常写代码中,我们想要交换两个数的值,通常都是创建第三个变量,存储其中一个变量的值,用来复刻;那么有没有一种办法,不需要创建变量,就能交换两个变量的值?答案是有的!正常的写法:int main() { int a = 4; int b = 5; //交换 int c = 0; c = a; a = b; b = c; printf("a=%d\n", a);//5 printf("b=%d\n", b);//4 return 0;}方法1,int main() {
2022-05-22 17:23:02
199
原创 C语言 图解指针与指针数组笔试题2,让你也能感觉指针如此简单
下面将继续上文章的指针笔试题,讲解8题指针笔试题进阶版,将会进行分析和画图讲解。如果想指针验证评估自己的指针地基是否牢固以及有兴趣的初学者,可以尝试挑战。话不多说,边上题做边讲解指针笔试题热身答案+图解笔试题1答案+图解笔试题2热身int main() { int a[] = { 1,2,3,4,5 }; int* ptr = (int*)(&a + 1); printf("%d,%d\n",*(a+1),*(ptr-1)); //a+1首元素地址+1,解引用得到2 //存入
2022-05-21 19:56:31
221
原创 模拟qsort函数的实现
前言:我们都已经知qsort能够帮我们排多种多样的数组,作为一名编程小白,自然就要探讨【qsort】究竟是怎么实现的?接下来我们就来模拟实现qsort函数的实现。
2022-05-21 09:38:21
126
原创 详解C语言-指针和数组笔试题解析,让你对指针了解的更加深刻
指针的解引用指针的概念你真的有自己的理解了吗,你真的懂了吗,这节带来的是如果想指针验证评估自己的指针地基是否牢固以及有兴趣的初学者,可以尝试挑战。讲解5题指针笔试题初阶版,将会进行分析和画图讲解。...
2022-05-17 19:20:38
509
3
原创 为什么char*的指针变量,通过strlen(&p)计算出的数是随机值
如有不正确或者个人看法意见等欢迎发言我们先来看代码:#include<stdio.h>int main() { char* p = "abcdef"; printf("%d\n",strlen(&p));//随机值3 printf("%p\n", p);//00937BD8}随机值3怎么来的呢?【如果p指针变量中有\0,打印必然小于4】为什么?可以看到,其中p代表a的地址,对char*p进行&,那就是取出存放a地址的变量的地址那么strlen访问&
2022-05-15 22:55:19
368
2
原创 qsort实现顺序与逆序/排整型,字符串数组,字符数组,结构体类型数组的名字排序,年龄排序等
前言:通常我们排序都需要创建一个函数实现排序,但当我们排完整型数组时,想要排字符串呢?那需要重新创建一个函数,完善它的功能,进而实现排字符串,这样非常繁琐,但是有一个函数可以帮我们实现传什么,排什么;qsort的传参:(1️⃣,2️⃣,3️⃣,4️⃣) (首元素地址,排序的元素个数,每个元素的大小,指向比较两个元素的函数的指针)1️⃣2️⃣3️⃣4️⃣的传参方法,下面介绍:…整型数组:......
2022-05-14 14:24:32
660
2
原创 这是一篇说明strcmp参数类型,以及除了比较字符串,如何用来比较单个字符
首先,strcmp我们平时都是用来排序字符串那么如何排字符?【比较单个字符】**参数:****我们需要知道:strcmp的参数类型是指针(也就是地址)**
2022-05-14 14:15:30
1053
原创 整型提升与截断
1.什么是整型提升2.什么是截断3.什么时候发生整型提升4.什么时候发生截断5.整型提升的规则6.整型提升的例题什么是整型提升什么是截断什么时候发生整型提升什么时候发生截断整型提升的规则整型提升的例题...
2022-05-11 11:47:49
714
1
原创 为什么char数据类型127+1等于-128
我们知道,每一个数据类型都有自己的取值范围;那么char自然也不例外;那么char数值在内存中是怎么变化的呢?为什么127+1变成-128的呢?下面将会讲明白1.我们先了解char的大小是1个字节char a=0;a=00000000 =0char a=1;a=00000001 =1a+2a=00000010 =2......a+127a=01111111 =127a+128a=10000000...
2022-04-29 18:00:52
1561
1
原创 解析二级指针为形参时,可以传什么样的参数,为什么可以接收这样的参数
首先我们知道,二级指针的概念:存放一级指针地址 的指针。也就是说,二级指针就是用来存放一级指针的地址。同理,一级指针的地址,我们要用二级指针来存放..........
2022-04-25 22:15:03
411
原创 原码,反码,补码,加法减法在计算机内存中的运算方法
什么是原码:所有数转化成二进制的序列就是原码【正数原反补相同】什么是补码:原码通过取反得反码,反码+1得补码【负数存的是补码】所有信息在计算机在内存中,都是由二进制方式存储计算机自能进行加法运算什么是原码,补码,反码呢?他们之间是怎么相互转化的呢?计算机是怎么实现5+3的?计算机是怎么实现5-3的呢?、、、下面我们来详细讲解:首先我们都知道#include<stdio.h>int main() { printf("%d\n", sizeof
2022-04-23 18:28:14
1998
原创 超详细的代码实现喝汽水
【喝汽水游戏,一元一瓶汽水,2个空瓶子换一瓶汽水,给你一些钱,你能喝几瓶】给你20元,一元能换一瓶汽水,2个空瓶子能换1瓶汽水,20元你能喝几瓶?【答案39】实现代码的时候,我们要通过分析问题,把一个大的的问题,拆成多个小的问题,一步一步实现这些小的问题
2022-04-22 19:08:35
822
原创 入门也能会的进制之间的相互转化【整数与小数】
十进制转化二进制:整数部分采用【除二取余,逆序排列】例如整数123的二进制序列1111011(123)D=(1111011)B
2022-04-22 00:26:52
2518
原创 如何将数组中元素的奇数排在前面,偶数排在后面
首先,思路最重要1,可以想到,就好像调座位;我们是不是可以通过检验坐在第一排的同学是不是男同学,以及坐在最后一的元素是不是女同学;如果坐在第一排的是男,坐在最后一排是女,我们就将他们两交换位置,让女同学坐在第一排如果第一排是男同学,最后一排也是男同学,那么我们就让最后一排减一,看他前面的是不是女同学是就换,不是就不换;第一排也是依此类推先写出框架;具体进行完善:void print(int arr[], int sz) {//打印数组 int i = 0; for (i
2022-04-18 15:28:57
1145
1
原创 关于数组越界访问修改内容导致程序死循环
#include<stdio.h>int main(){ int i=0; int arr[]={1,2,3,4,5,6,7,8,9,10}; for(i=0;i<=12;i++){ arr[i]=0; printf("Hell\n"); } return 0;}在visualstudio中,死循环(个别编译器有所不同,取决与编译器)显然运行后死循环了;为什么呢,我们来看...
2022-04-18 13:06:47
231
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人