- 博客(46)
- 收藏
- 关注
原创 从零开始的c语言日记day39——指针进阶-函数指针
首先看(void(*)())如果我在(*)里放一个东西(*p)那么会变成(void(*p)())这样就可以看出这是一个函数指针,那么(viod(*)())是不是就是一种函数指针类型类似于int*等。0在括号里在类型的后面相当于一次强制类型转换,0是int类型把0转换成函数指针类型那我就认为0是指针地址。Pf指向的参数和函数的参数类型要一至。以上代码是一次函数调用,调用的是0作为地址处的函数。取地址函数名和函数名都是打印函数地址。练习:如何解释图中代码作用。2.调用0地址处的这个函数。
2023-11-29 23:54:30
495
2
原创 从零开始学习C语言日记——DAY33指针-数组-结构体
函数传参的时候,参数是需要压栈的。如果传递一个结构体对象的时候,结构体过大,参数压栈的的系统开销比较大,所以会导致性能的下降。结构成员的类型可以是标量——age、name。结构的每个成员可以是不同类型的变量。如果需要访问结构体变量的内容可以使用.(点)或者*、->(指针)整形数组——存放整形的数组就是整形数组。如果你的对象里有其他结构体那么在定义的时候应该用对应的花括号。字符数组——存放的是字符。结论:结构体传参的时候,要传结构体的地址。所以指针数组是存放指针的数组。是数组,是存放指针的数组。
2022-09-21 15:18:26
438
原创 从零开始学习C语言日记——DAY31指针-操作符优先级补充
在计算机科学中,指针( Pointer )是编程语言中的一个对象,利用地址,它的值直接指向( points to )存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。第一个结果相同但是后面的结果不相同整型指针+1会+4(4个字节)跳过一个整型。此程序可以使每循环一次找到数组一个元素的地址因为都是相同的int类型,指针的大小在32位平台是4个字节,在64位平台是8个字节。指针是用来存放地址的,地址是唯一标示一块地址空间的。结果是取到的地址都是相同的地址。
2022-09-05 17:32:52
377
原创 从零开始学习C语言日记——DAY29操作符详解
一、操作符详解例题如果我要将a的5为改为1那么改如何编程A=1313=00000000 00000000 00000000 00001101或上(按位与=有1出1全0出0)1<<4=00000000 00000000 00000000 0001 0000当有一出一时则会让第五位变为1其他的按照13进行。又因为是2进制1 2 4 8 16所以最后打印的数为11101=29二、赋值操作符赋值操作符是一个很棒的操作符,他可以让你得到一个你之前不.
2022-05-11 20:30:24
379
原创 从零开始学习C语言日记——DAY26三子棋游戏
一、游戏框架可以使用3个文件分开编写第一个test.c测试游戏逻辑的文件——基本结构第二个game.h关于游戏相关的函数声明,符号声明,头文件的包含——定义第三个game.c游戏相关的函数的实现——每一个函数模块的内部逻辑的编写二、程序首先来看test.c文件菜单界面打印出来提供给玩家选择是否加入游戏这里引用的game.h是可以将game.h里的定义引用到test里使用,即test里也不用定义一些都需要定义的文件。接下来创建数组...
2022-04-03 15:49:21
4032
原创 从零开始学习C语言日记——DAY25-冒泡排序
数组作为函数参数往往我们在写代码的时候,会将数组作为参数传个函数,比如∶我要实现一个冒泡排序(这里要讲算法思想)函数将一个整形数组排序。什么是冒泡排序?就是将数组内的两两进行比较再排列这里要注意的是数组在进行传参的时候,不能在函数内部用intsz = sizeof(arr) / sizeof(arr[0]);这样子的方法再求元素个数,形参是实参的一份临时拷贝,arr接收后再拷贝一份会很浪费空间,数组在传参的时候仅仅传的是数组第一个元素的地址。本质上上面的arr是一个指针,一旦是指..
2022-03-19 17:49:49
1407
原创 从零开始学习C语言日记——DAY24一维数组与二维数组
一维数组在内存中的储存注意看地址的最后一位,每一个之间都差4.因为我们每个元素都是整型,都是4个字节。在内存里开辟一块空间连续存放。随着数组下标的增加,元素的地址,也在有规律的递增。由此可得出结论:数组在内存中是连续存放的。二维数组的创建和初始化二维数组的创建第一个是行第二个是列二维数组初始化可不可以把123放第一行34放第二行行和列不能同时省略,列不能单独省略,行可以单独省略二维数组的使用...
2022-03-17 23:37:45
639
原创 从零开始学习C语言日记——DAY23函数练习与数组入门
练习求斐波那契数列如果使用递归的话当算到特别大的数时如50会特别慢,之前的会被重复计算很多次所以不能使用递归算法。5049 4848 47 47 4647 46 46 45 46 45 45 44.。。。此程序是移动abc来获取后面的值数组一维数组的创建和初始化数组是一组相同类型元素的集合。数组的创建方式:创建数组注∶数组创建,[]中要给一个常量才可以,不能使用变量。数组的初始化数组的初始化是...
2022-03-16 23:01:16
832
原创 从零开始学习C语言日记——DAY21
一、函数的声明和定义函数声明∶1.告诉编译器有一个函数叫什么,参数是什么,返回类型是什么。但是具体是不是存在,无关紧要。2.函数的声明一般出现在函数的使用之前。要满足先声明后使用。3.函数的声明一般要放在头文件中的。函数定义∶函数的定义是指函数的具体实现,交待函数的功能实现。如果把函数放主程序后面会产生这样一个错误,warning,Add未定义;假设外部返回int。因为扫描是从上往下扫的。先在前定义函数int Add(int x,int y);即可。但是尽量不要.
2022-03-13 20:35:38
2175
原创 从零开始学习C语言日记——DAY20
练习1打印出1000——2000年的润年练习2编程实现找出一有序数组的其中任意数这组程序运行起来是错误的要注意的点有以下几点:1.2.数组在进行传参的时候是不能在内部是不能用intsz = sizeof(arr) / sizeof(arr[0]);这样字的方法再求元素个数,形参是实参的一份临时拷贝,arr接收后再拷贝一份会很浪费空间,数组在传参的时候仅仅传的是数组第一个元素的地址。本质上上面的arr是一个指针,一旦是指针sizeof计算一个指针大小的时候...
2022-03-12 23:14:44
528
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅