自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 C语言初阶(三)深入了解指针(5)

统计的是从strlen函数的参数str中这个地址开始向后,\0之前字符串中字符的个数。1. sizeof(数组名),这里的数组名表示整个数组,计算的是整个数组的大小。如果操作数是类型的话,计算的是使用类型创建的变量所占内存空间的大小。2. &数组名,这里的数组名表示整个数组,取出的是整个数组的地址。关注内存中是否有\0,如果没有\0,就会持续往后找,可能会越界。srtlen是求字符串长度的,统计的是 \0 之前字符的个数。sizeof 计算变量所占内存内存空间大小的,单位是字节。数组名是数组首元素的地址。

2024-07-05 22:50:30 346

原创 C语言初阶(三)深入了解指针(4)

qsort是C语言中的一个库函数这个函数是用来对函数进行排序的,对任意类型的数据都能排序。把函数的指针作为参数传递给另一个函数,用来调用被传函数,这个被传函数就是回调函数。因为p1,p2的类型都是void,所以if语句的条件中要强制类型转化成特定的类型。回调函数不是被直接调用,而是在特定的事件或条件发生时由另外的一方调用的。qsort函数所需要的比较元素大小的函数要放在qsort上面。p10);回调函数就是⼀个通过函数指针调用的函数。

2024-07-02 19:47:54 300

原创 C语言初阶(三)深入了解指针(3)

根据上面的例子,第一行的类型就是int [5] ,所以第一行的地址的类型就是数组指针类型int(*)[5]存放的是整型变量的地址,能够指向整形数据的指针变量。根据数组名是数组首元素的地址这个规则,二维数组的数组名表示的就是第一行一维数组的地址。把函数的地址存到⼀个数组中,这个数组就叫函数指针数组,那函数指针的数组如何定义呢?要将函数的地址存放起来,就得创建函数指针变量,函数指针变量的写法和数组指针非常类似。函数是有地址的,函数名就是函数的地址,当然也可以通过&函数名的方式获得函数的地址。

2024-06-27 15:59:12 1087 1

原创 C语言初阶(三)深入了解指针(2)

arr[0]和&arr[0]+1相差4个字节,arr和arr+1相差4个字节,因为&arr[0]和arr都是首元素的地址,同理arr[i] 应该等价于*(arr+i),数组元素的访问在编译器处理的时候,也是转换成首元素的地址+偏。sizeof(数组名)中单独放数组名,这里的数组名表示整个数组,计算的是整个数组的大小, 单位是。&数组名,这里的数组名表示整个数组,取出的是整个数组的地址(整个数组的地址和数组首元素。数组名是数组首元素的地址,在数组传参的时候,传递的是数组名,本质上数组传参传递的是数组。

2024-06-26 22:40:49 703

原创 C语言初阶(三)深入了解指针(1)

计算机内是有很多的硬件单元,硬件与硬件之间是互相独立的,而硬件单元是要互相协同工作的,至少相互之间要能够进行数据传递,那么如何通信呢?答案很简单,用"线"连起来。样,y的地址和b的地址不⼀样,相当于x和y是独立的空间,那么在Swap1函数内部交换x和y的值,直接将a和b的值交换了,那么就可以使用指针了,在main函数中将a和b的地址传递给Swap函数,数内部创建了形参x和y接收a和b的值,x和y确实接收到了a和b的值,不过x的地址和a的地址不一。

2024-06-25 23:58:37 1041

原创 C语言初阶(二)操作符详解

结构是⼀些值的集合,这些值称为成员变量。赋值操作符: = 、+= 、-= 、 *= 、 /= 、 %= 、<<=、>>=、&=、|=、^=8进制的数字每⼀位是0~7的数字,各自写成2进制,最多有3个2进制位就足够了,在2进制转8进制。数的时候,从2进制序列中右边低位开始向左每3个2进制位会换算⼀ 个8进制位,剩余不够3个2进。2进制序列中,最告位的1位是被当做符号位,用0表示“正”,用1表示“负”,剩余的都是数值位。如果某个操作符的各个操作数属于不同的类型,其中一个操作数的转换为另一个操作数的类型。

2024-06-20 13:11:51 797

原创 函数栈帧的创建和销毁

在不同的编译器下,函数调用过程中栈帧的创建是略有差异的,具体细节取决于编译器的实现越高级的编译器,函数封装越复杂,越不容易观察和学习。

2024-06-19 09:39:21 541

原创 C语言初阶(一)

如果采用函数递归的方式完成代码,递归层次太深,就会浪费太多的栈帧空间,也可能引起栈溢出的问题,为了避免这种问题,可以采用迭代的发布方式。跳上n个台阶的跳法可以看成是跳上n-1个台阶的跳法加上跳上n-2个台阶的跳法之和。递归是一种解决问题的方法,在c语言中,递归就是函数自己调用自己。但这种写法有大量的重复计算,效率很低,因此要尝试使用迭代的方法。递归的思考方式就是把大事化小,递是递推,归是回归。青蛙每次能跳1或2个台阶,跳上n个台阶有几种跳法。同样看成是n个盘子,上面有n-1个盘子,以此类推。

2024-06-17 13:44:23 548

原创 初识C语言(扫雷游戏)

不是雷, 利用‘1’-‘0’=1 ,把字符转换成整型创建函数,统计这个坐标周围雷的个数,显示。为了让这两个数组可以共用一个函数,所以元素都用char类型。边界不好处理所以初始化的棋盘比用到的棋盘要大一圈。一组用来存放雷,用‘0’表示没雷,用‘1’表示雷。用while循环和rand()函数随机生成雷。创建两个数组,再创建一个函数。创建一个函数,打印游戏界面。里面嵌套switch语句判断输入选项。do-while语句打印菜单。

2024-04-24 13:58:05 414 1

原创 初识C语言(五)

格式ret_type fun_name(形式参数)ret_type 是函数返回类型fun_name 是函数名括号中放的是形式参数{ }括起来的是函数体先声明,后调用,函数的定义也是一种特殊的声明。

2024-04-22 12:21:36 1019 1

原创 初识C语言(四)

完全初始化 int arr2[3][5] = {1,2,3,4,5, 2,3,4,5,6, 3,4,5,6,7};按照行初始化 int arr3[3][5] = {{1,2},{3,4},{5,6}};sizeof可以计算数组的大小(单位是字节)进而计算元素个数(数组的大小除以每个元素的大小)完全初始化 int arr[5] = {1,2,3,4,5};[ ]中的常量值指定数组的大小,也可以不填,以{ }中的元素个数为准。

2024-04-16 16:21:38 246

原创 初识C语言(三)

while和for循环都有初始化、判断、调整三部分,但for循环的三个部分非常集中,便于代码的维护。==是关系操作符,=是赋值操作符,为了防止搞出错可以把常量放在等号左侧。例如 2

2024-04-09 17:42:18 593

原创 初识C语言(二)

数据类型分为: 字符型 chara 1Byte 整型 { 1.短整型 shourt [int] 2Byte

2024-04-02 13:28:56 1089

原创 初识C语言(一)

大家好,我是一名网络工程专业的大一在读生,准备通过博客来记录自己学习的成长和收获,希望通过不断地学习和进步能够在计算机领域内小有所成。

2024-04-01 14:11:03 623

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除