![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c编程
文章平均质量分 63
杨·戬
孤舟蓑笠翁 独钓寒江雪
展开
-
c语言之字符串的集合存放形式
那么这个时候问题来了,没有在第一次初始化的时候赋值字符串,那么又该如何操作呢?原创 2024-04-16 17:22:38 · 924 阅读 · 0 评论 -
关于二级指针保存一级指针的问题
上面是给到了两个函数,现在可以只给到一个函数,其实也很简单,你就在外部的话,直接就接受,第一次插入的地址就可以了嘛,但是考虑到每次传进来的pnode都一样,也就是说还是从根结点开始干,插入的时候要从根结点开始遍历。但是这里假如root保存的是一个空的地址,那么这棵树会串接到pnode上面,pnode是一个形参,它本身也是没有空间的,如果是一个结构体,先赋值给这个结构体一片空间。我们考虑传入一级指针呢?在写二叉搜索树的时候,碰到一个问题,就是利用二级指针来改变一级指针保存的地址问题。假设我就要传一级指针呢。原创 2023-07-24 23:16:14 · 276 阅读 · 0 评论 -
c语言之数据类型相应转换问题
当然了,如果在内存当中,数据类型不一致,你也可以选择强转,但是访问可能会出错,如果是数据类型不一致的情况下。上面就是做单链表的时候,设计一个数据结点和一个头结点,头结点里面嵌套了一个数据结点,目的是为了从头结点方便移动,毕竟第一个结点是指向数据结点。简单的数据类型转换当然是没有什么问题的,只是这里涉及到了复合数据类型,一旦出现相应内存不匹配问题,就会出现相应地址访问失败的情况。上面两个结点虽然命名不一样,但是内存结构都是一样的,先来看一下内存图。下面我们先来看一下数据类型一致的情况下,数据的访问。原创 2022-10-30 03:31:28 · 362 阅读 · 0 评论 -
c语言之位域
数据在存储的时候,并不需要占用一个完整的单元,只需要占用一个或者几个二进制位,限定数据的位数,节约内存资源简单来说就是,比如一个int,一般来说占用四个字节,那么四个字节就是32个位,但是我们实际当中用到的数据用不了那么多位,比如我们要存储月份,那么月份是不是就是1-12呢,那么我们这个时候就可以把这个int类型设计成四个位,那么它能存储最大的数据就是1111,对吗,也就是0-15的范围,存储2^4个数据,那么这个范围就是我们想要的合理范围。在c语言中,位域一般用于结构体里面话不多说,直接上代码。...原创 2022-07-28 17:09:20 · 2441 阅读 · 0 评论 -
浮点数内存存储问题
那么单精度的偏移量就是2^7-1=128-1=127,双精度的偏移量就是2^11-1=1024-1=1023。对于内存来说,是不允许这样一直循环下去的,所以,在相应有限的空间里面,只能存放一定的数据,后面的就直接丢失,所以,这也是小数为什么会造成一定的误差的原因。在考虑存放的时候,还是要注意低位存放在低字节,高位存放在高字节,还要注意,数据的存储顺序(低位从左往右存)与解析顺序(从右往左解析)2^e-1-1,这里e就是阶码的位数。2.双精度的阶码位数11。...原创 2022-07-28 16:50:09 · 282 阅读 · 0 评论 -
c语言之大端小端问题
这就是字节序问题:数据在计算机内存中存储或者网络传输时各字节的存储顺序通常来说就分为两种情况: 一种是大端(big-endian):高字节(高位)存放在低地址,低字节(低位)存在高地址 另外一种小端(little-endian):高位存放在高地址,低位存放在低地址这里先来说一下,数据采用大端还是小端与cpu,系统,硬件参数有很大关系,不管什么编程语言,数据都有可能采用大端或者小端来存放,一般来说windows,linux,手机,平板都是采用小端来存存放数据,这种数据存储方式有利用原创 2022-07-10 20:38:37 · 623 阅读 · 0 评论 -
c语言之字符串数组
还是在写图的存储结构的时候,遇到了问题,就是如何在一个数组中存放字符串,我相信这个问题对于面向对象的编程语言来说,轻而易举,比如对于Java来说,直接像下面就可以了: 但是c语言没有String这个类型,能想到存放字符串的数据类型就是char* p = "love",指向常量空间里面的一个地址,我们说了,一级指针可以传递数组,换句话说,一级指针可以理解成传递了数组的首地址,然后就可以按照数组的方法进行遍历。那么换句话来说,字符串可以表示为char*的形式,那么我用一个数组来存放char*不就行了嘛,那么存放原创 2022-06-27 16:07:22 · 7579 阅读 · 1 评论 -
c语言字符指针、字符串初始化问题
之前,我在做图的存储结构的时候,用邻接矩阵来表示一张图,遇到一个段错误问题:上面只要一输入一条边,就会出现段错误,而段错误,往往就是内存地址访问出错,比如数组越界,访问了未分配的地址,访问系统已经分配的地址,都会出错,于是我将错误定位到输入边的这个位置 上面就是我在循环之前,定义了两个字符指针,准备用来存放字符串,但是只要一scanf之后,只要访问其中某一个变量就会出现段错误,难道是说这个地址不能别访问?于是我做了一个实验,如下操作:直接上代码: 然后就会内存地址访问错误 那我又改成如下代码:原创 2022-06-27 16:13:00 · 3303 阅读 · 0 评论 -
c语言之指针常量、常量指针和关于scanf输入问题
这个常量指针与指针常量特别容易混淆,所以下面来简单说一说:看代码: 1 #include <stdio.h> 2 #include <stdlib.h> 3 4 5 int main() { 6 int a = 20,b = 30; 7 //常量指针,指向地址的值不能更改 8 int const *pa = &a; 9 //指针常量,指向的地址不能更改 10原创 2022-02-06 14:50:05 · 2573 阅读 · 0 评论 -
关于c语言数组指针指向问题
是不是有点疑惑,上面a2, &a2, &a2[0][0]地址一样,为什么*号取出来的值就不一样,说明表示的含义不一样。a2表示行地址&a2表示整个二维数组的地址&a2[0][0] 表示二维数组第一个元素的地址看下上面打印的结果:数组名去sizeof就是整个数据大小的数据,其余&取值,都表示地址,按照4个字节处理然后sizeof里面如果有*,就表示这片空间的大小。再来说一下:sizeof(*二维数组名字) sizeo...原创 2021-12-29 17:38:40 · 559 阅读 · 0 评论 -
c语言之结构体,共用体大小的问题
下面就是做左边是偏移量,右边是数据大小,->表示数据的变动struct A { short b1;//0 2 int num1;//2 4 float num2;//6->12 4 double num3;//10->16 8 char num4[20];//24 20 short num5;//44 2->4 double num6;//48 8 => 56};struct B { int num1;/.........原创 2021-07-13 13:10:27 · 686 阅读 · 0 评论 -
c语言复习中遇到的问题
第一个问题:就是关于虚拟机如何安装VM tools?怎么查看linux版本号:cat/etc/issue我给大家说一下,把一个.tar.gz的包给解压缩到一个你想要的地方。然后通过控制台进入到这个如下文件夹里面:然后执行./一路上除了回车,我们就输入no,然后就安装好了。我们这没有设置文件共享,因为没有成功。我来说一下,就是说如果想方便在linux与window原创 2016-12-26 03:36:46 · 513 阅读 · 0 评论 -
c语言指针一些简单讲解
问题需求:用四种方法来把一个数组的值赋给另外一个数组上面是第一种方法,也是运行时间最慢的一种方法。这种方法太慢,如果是我选择,我不会选择使用这种方法上面是第二种方法,这个稍微快一点上面是第三种方法,但是在每次for循环的时候,还是做了一次减法上面这种方法厉害了,没有太过复杂的运算,面试的时候可以这样来写上面就是通过四种方法来解决了问题,下面就来说说指原创 2016-12-26 03:35:07 · 759 阅读 · 0 评论 -
c语言递归小讲
代码1:函数调用函数的递归,死循环递归,这种递归会提示堆栈溢出的问题下面是执行图解:代码2:下面这个递归也很简单,就是循环递归,可以控制次数,比如下面我们要打印10次gogogo下面是执行图解:代码3:下面我们用递归做一个1+......100下面是加到5的图解分析代码4:这道题就会有点难度了,腾讯面试题,假定有一个很长的原创 2016-12-26 03:41:15 · 478 阅读 · 0 评论 -
c程序第一篇1
>>c语言一个概述所有语言的起源都是ALGOL语言1960---1969之间提出来的,比如我们是1995年出生的人,那么第一个编程语言出现离我们出生大约就有26年左右。这里我们也要提一下,就是世界上第一个程序员,那么他是谁呢?是一个女人,拜伦的女儿,阿达洛芙莱斯,她创造了第一个算法。在1972年的时候,Dennis Ritchie在贝尔实验室创造了传统的c语言1990年美国国家标准局(原创 2017-01-11 01:45:34 · 534 阅读 · 0 评论 -
c程序第二篇2
>>关于常量的定义有两种方法来定义常量:#define NAME “puxinagxin”const 数据类型 变量名用const定义常量,一开始必须初始化用#defien定义常量更有全局观,方便程序员的阅读与修改>>变量在内存里面的字节顺序计算机的内存是以字节为单位的,c的数据类型就不多说了可以用sizeof运算符查看变量或者数据类型的大小C语言默认是有符号的原创 2017-01-11 02:00:00 · 403 阅读 · 0 评论 -
c程序第三篇3
关于复习题的解答:取模运算%,只能用于整数。取模运算得到的结果是负数还是正数,取决于被除数在表达式中,他会自动类型转换,但是输出的时候还是会按照你输出的格式输出隐式类型的转换就是不带转换类型的转换,也就是自动转换,比如赋值号。显示转换就是强制类型转换。下面是习题3.3的一些解答:代码如下:结果:这里也说明了一点,逻辑与&&比逻辑或||的优先级大原创 2017-01-11 02:17:38 · 417 阅读 · 0 评论 -
c程序第四篇4
>>这里我们再说明一下,判断与循环我们把后面的课程结束了再做,现在进入数组的环节基本数据类型,大家都知道,但是基本数据类型有一个弊端,就是在任何一个给定的时刻,一次只能保存一个数值。因此,数组这个东西都出现了。数组:大小固定,含有相同的数据类型的元素的聚合。数组是一种数据结构,数组名是里面所有元素所共享的,我们通过下标来获取里面的值,下标是从0开始的,也就是下标比数组元素的个数少一位。原创 2017-01-11 02:40:58 · 457 阅读 · 0 评论 -
c程序第五篇5
下面进入到用malloc函数来创建数组,分配内存,然后往里面赋值:下面我们来引入一个问题啊,就是说,我们可不可以用符号常量来定义一个数组?上面的代码会报错,必须输入一个常量表达式,并且只可以是整型。需求:编写一个for循环,将数组对角线上的元素初始化为1,其他的初始化为0,如下所示假设五行五列先说一下知识点,一个数组如果不进行初始化,是不原创 2017-01-11 02:48:58 · 299 阅读 · 0 评论 -
c语言的一个简单回顾
这里先来说一下cpu的运行原理。cpu我们知道是计算机的核心,就相当于是说,这就你相当于是人的大脑一样。你没有大脑,人又怎么思考,怎么去做一些平常看似简单的事情。cpu的根本任务就是去执行指令。它的内部可以划分为二个重要部件。第一个是运算器,第二个是控制器。这里就来说的简单一点。控制器主要是负责从内存中读取数据,载入寄存器中。然后通过内部分析应该执行什么操作。运算器,主要是原创 2017-03-17 15:43:33 · 673 阅读 · 0 评论 -
还是来讲讲c
之前说过一个问题,函数传参是副本机制。但是数组是一个例外,用数组做参数,传递的是一个地址。也就是说,数组这个东西是直逼内存地址的。数组作为函数参数,会退化为一个指针,一级指针作为函数形式参数传递地址 小程序:程序执行20秒以后,实现即时退出,通过控制台来展示信息int main(){int i = 0; while (1){i++;char str[50原创 2017-04-08 13:13:46 · 660 阅读 · 0 评论 -
c语言字符串的一些简单讲解
1.strlen自我详解//下面这种写法应该是比较快的,少变量,用指针快1.strcmp自我详解这个函数只返回-1,1,0数组名最好不要直接来执行++、--操作,一般情况下会报错这里又延伸出了一个问题,就是说,当字符串的值=’\0’是时,if条件是不会进去的。此时的值显示的是假。除非这种情况才会为真 我们还需要注意的是,如果是分号隔开的是两条语句,如果是原创 2016-12-26 03:26:55 · 452 阅读 · 0 评论 -
c语言字符串的输入与输出的一些简单叙述
很多同学都不明白,这个c怎么来处理字符串,特别是初学者,他不像php,直接可以对字符串进行处理,有对应的数据类型,而在c里面,他是没有对应的数据类型的。所以,怎么来处理,就成了一个问题。下面给大家推荐两个函数第一个puts;第二个是printfputs的用法是可以直接输出字符串,也可以传入变量来输出相应的字符串Printf()当然就是格式化输出字符串。代码如下: #incl原创 2016-12-26 03:33:02 · 703 阅读 · 0 评论 -
c语言数组一些重要讲解
上面这个选择排序法编译运行时间是0.25秒gcc编译器下面看看用指针怎么来进行操作上面就是指针的操作方法下面我们来看一下冒泡排序法,还是用两种方法来做下面我们用指针来做测试上面这个程序代码,最开始的时候会报出一个错误,那就是如下Stack around the var原创 2016-12-26 03:39:52 · 639 阅读 · 0 评论