- 博客(75)
- 收藏
- 关注
原创 C语言 - 多级指针、void指针及const
另外,使用void指针时要小心,确保在进行类型转换时没有出错,以避免潜在的错误和内存访问问题。强制类型转换是对pa变量进行强制类型转换,并且这里的代码逻辑是先进行pa+i ,然后再进行强制类型转换,可是。上述代码就是再定义一个和数组类型一致的指针,然后让void指针强制类型转换后赋值给这个指针就完成啦!void指针是一种不确定数据类型的指针变量,它可以通过强制类型转换让该变量指向任何数据类型的变量。对于void指针,在没有强制类型转换之前,不能进行任何指针的算术运算。除了这种强制类型转换的方式以外,其实。
2023-08-19 22:17:23
491
原创 C语言 - 指针数组
所谓指针数组是指由若干个具有和的构成的。声明一个指针数组和一个普通数组:把一维数组a[0]和a[1]的首地址分别赋予指针变量数组的数组元素pa[0]和pa[1]://等价 pa[0] = &a[0][0];//等价 pa[1] = &a[1][0];此时pa[0]指向了一维数组a[0]的第一个元素a[0][0];pa[1]指向一维数组a[1]的第一个元素a[1][0];同样的,*2 2 2从这个代码可以看出a[0][1] 、*a[0]+1 和 *(pa[0]+1)都是等价的。
2023-08-19 14:39:01
143
原创 C语言问题 - 关于一维数组和二维数组用*a+i形式表达
把我搞懵的是*(pa + k) = *(a + i) + j;(其实真的很简单的道理还一直在纠结。。。其实这句话就是指(对等号左右边语句分别解释):每次循环 pa+k都会让pa指针都会向下移动一格,而加上星号*就是为了取指针所指的值,而pa数组存放的都是指针,所以这里加 * 就是为了取得指针里存放的地址,最后整体的 *(pa+k) 也就是 pa[k] ,那么等号左边解释完了,到底这个地址是什么地址呢?
2023-08-19 13:47:04
652
原创 c语言问题 - 数组指针 *ch+i 和 *(ch+i) 的区别
是根据指针和偏移量访问数组中的特定元素,结果为该元素的值。的偏移量来访问数组中的特定元素。取得该处的元素的值。这实际上是一个数学运算,即将字符。的 ASCII 值(104)与。是先计算指针所指向的数据并与。的情况下,如果设定一个下标。操作会将指针移动到数组的第。结果将是一个整数值。指针获取数组的首个元素。相加,结果为整数值;
2023-08-18 21:57:14
94
原创 c语言 - 学习字符指针的一个误区(*p和p)
在这段代码中,指针p存放的是字符串常量"Hello World"的首地址,所以*p也就是字符串常量中第一个字符值“H”,把单个字符传进puts()函数里肯定是不对的。为什么这里 p 代表的是字符串常量的首地址,但是放到 puts() 函数里了后就可以输出一整个字符串呢?
2023-08-18 16:50:38
136
原创 c语言 - 要注意指针会动态变化
星p1和星p2的值不是一直都是2,后面k的值变化了,由于p1和p2是一直指向k的,所以星p1和星p2也在随着k变化,也就是后来变成了都是4,于是最后结果是16。
2023-08-17 11:57:32
103
原创 c语言 - 指针的运算
一定要注意y被赋予的是类似于(*–p)的值,也就是a[0]的值,也就是5,赋值完以后才进行后面的++操作,即a[0] = 5 ++ = 6。当我输入1,2,3,4,5,6,7后。需注意的点都在注释里标注过了。指针的关系运算符如下图所示。
2023-08-17 11:48:32
366
原创 c语言 - 二维数组元素地址的偏移
那么a[2]表示?A. a[2][0]C. a+32因为二维数组在内存中是按行存储的,a[2]则表示数组第三行的首地址。A选项没有加取地址符号,则没有意义。B选项表示a[0][0]再向前偏移32个int类型的地址,不是数组第三行首地址。C选项表示整个二维数组第一个元素向下偏移32个int类型的地址,不是数组第三行首地址。D选项表示a[0][0]再向后偏移8个int类型的地址,那么就跳到了数组第三行的第一个元素,则为数组第三行首地址。
2023-08-17 09:32:58
498
原创 计算机基础 - 0x开头的十六进制数占空间内存计算
而一个字节占8位,那么8个十六进制数就占4个字节,所以0xbf98c768内存空间占4个字节。总结:先把这个十六进制数占多少位算出来,然后通过字节和位的转化计算占多少字节。这一共有8个十六进制数,一个十六进制数占4位,那么8个十六进制数就占32位。例如:0xbf98c768。
2023-08-16 21:40:40
1588
原创 c语言 - 关于如何输入字符并并指定操作停止输入
当然,这里的EOF可以换成其它的字符用来输入特定字符后结束输入。的意思是一直输入字符直到按下ctrl+D。
2023-08-16 14:32:54
2163
原创 c语言 - ASCII码表咋看
通过这些列,可以使用不同的表示方式来查看字符的值,方便在不同的场景中使用。例如,一个字符的ASCII码值可以用八进制、十进制或十六进制来表示。在ASCII码表中,Oct(八进制)、Dec(十进制)、Hex(十六进制)分别表示字符的不同表示方式,而不同的列则代表不同的数值表示形式。
2023-08-16 09:42:56
888
原创 c语言 - 转义序列
是C语言中的转义序列,表示一个字符的十六进制 ASCII 值。则将字符串 “is a test” 存储在数组。可以在C语言的字符常量或字符串中使用。表示十六进制的 ASCII 值。的 ASCII 码。
2023-08-15 20:05:06
730
原创 c语言字符串 - 长度计算问题(sizeof()和strlen())
而使用 strlen() 函数可以准确地获取字符串的长度,因为它会遍历字符数组直到遇到空字符 \0 为止。它返回的结果就是字符串的实际长度。sizeof()返回的是字符数组的大小(而不是字符串的长度),就是定义的时候多大就是多大,它不会自动遇到字符串中的’\0’就停止计算。但换成strlen(ch)了以后长度就为5了。
2023-08-15 15:30:18
127
原创 c语言 - 打印二维数组的行数和列数
有的时候在定义二维数组时并不会赋予它行数,那么这个时候如果需要打印出整个数组,就需要行数来作为每次循环的 i 值了,这个时候应该怎么办呢?
2023-08-15 09:19:58
1065
原创 c语言题目-打印杨辉三角形的前十行
打印出杨辉三角形的前十行第1行: 1第2行: 1 1第3行: 1 2 1第4行: 1 3 3 1第5行: 1 4 6 4 1第6行: 1 5 10 10 5 1第7行: 1 6 15 20 15 6 1第8行: 1 7 21 35 35 21 7 1第9行: 1 8 28 56 70 56 28 8 1第10行: 1 9 36 84 126 126 84 36 9 1。
2023-08-13 21:31:57
2681
1
原创 嵌入式学习-c语言数组
数组是构造数据类型之一,是具有一定顺序关系的若干个变量的集合。数组中各元素的数据类型要求相同,数组可以是一维的,也可以是多维的。注意:数组名是地址常量!!!注意是常量!!不能被修改!!用代码进行测试:输出结果为:一维数组的初始化初始化方式:在定义数组时,为数组元素赋初值int a[5] = {1,2,3,4,5};说明:1、数组不初始化,其元素值为随机数2、对static数组元素不赋初值,系统会自动赋以0值3、只给部分数组元素赋初值,那么剩余的元素会自动赋0值1、C语言对数组不作越界检查
2023-08-13 20:13:55
198
1
原创 c语言输出缓冲区问题
然而,由于没有换行符或其他输出终止符,标准输出缓冲区中的内容不会立即刷新到屏幕上。这是为了提高输出效率。如果要确保输出立即显示在屏幕上,可以在。当我输入1时,确实不会输出任何内容。这是因为我的代码中使用了。当你输入1后,程序会接收到正确的输入,并在内部将其存储在。,你就可以在输入正确后立即在屏幕上看到输出。函数来读取输入,并将输入赋值给变量。通过添加换行符或调用。
2023-08-11 23:30:56
108
1
原创 嵌入式学习-循环语句
必须有。也是每个循环语句都需要检查的东西。它虽然有它的坏处,但它也有优点,比如当函数有很多个出口,使用goto把这些出口集中到一处就很方便,特别是函数中有很多重复的清理工作的时候。理由是:1、无条件跳转易于理解2、可以减少嵌套3、可以避免那种忘记更新某一个出口点的问题4、算是帮助编译器做了代码优化。
2023-08-11 09:38:10
129
1
原创 c语言题目-水仙花数
水仙花数,也被称为阿姆斯特朗数或自恋数,是指一个n位数,其各个位上数字的n次幂之和恰好等于该数本身。以三位数为例,一个三位数abc 如果满足 abc = a³ + b³ + c³ ,那么它就是水仙花数。
2023-08-11 09:30:48
224
1
原创 嵌入式学习-c语言switch
(3)break是强行跳出整个switch体的,一般每个case后面都要跟一个break,但default的break可以省略,但一般要放在最后一个case语句下方。如果不写break的话,那么即便满足了一个case也会接着继续执行,而不会直接跳出switch体。2、既然case不能用范围表示,那就想办法用数值表示,比如这里的score/10就是从范围转化到数值的例子。注意switch后面真的只能是整型、字符型表达式和枚举类型,这里浮点型是不能用的。3、一定要注意加break!输入分数进行分数评级。
2023-08-10 23:29:02
112
1
原创 c语言题目-分数评级
经验:除了上面注释的问题之外,还可以学到一个知识,如果if里面的条件把握不住的话,可以灵活使用取反操作,比如if(!(grade>=0 && grade <=100))也可以作为非法的条件(之前括号里是或)。
2023-08-10 12:56:59
80
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅