计算器计算结果后会带十的几次方,连1×5算出来也是5.000000×10的00次方,怎么调回去啊1?

前面所说的数据类型只能用于处理整数。如果我们需要使用小数,就要使用浮点类型floating-point)。C 提供了三种浮点类型:float, double, 以及 long double注意,unsigned/signed 不能用于修饰浮点类型。浮点类型可以处理正数,也能处理负数。没有无符号浮点型

C 标准要求 float 类型至少要能精确表示到小数点后6float 一般是

    浮点型变量的声明和初始化与整型变量一样。例如:

浮点型常量有多种写法。其基本形式为:首先写整数部分(可以带符号),接着写小数部分,然后写 e 或者 E,最后再写一个有符号整数。例如:

其中 eE 被称为阶码标志eE 后面的有符号整数被称为阶码。阶码代表 10 10N。此外,正号可以省略不写。小数部分也不是必需的,也就是说,5e3 也是正确的。阶码标志和阶码也可以不写,如:13.5。小数点后面,阶码标志之前的那部分整数可以不写(9.E5),小数点之前的整数也可以不写(.96e-8),但是不能同时都不写。例如:

注意:浮点型常量中不能有空格!例如:

浮点型常量默认是 double 类型的。假设 var_ffloat 类型的变量,如果有以下语句:

那么 9.03.0 都是 double 类型的常量。它们的乘积也是 double 型的。在进行赋值的时候,这个乘积被转化成 float 类型,然后再赋值给 var_f

    当然,我们也可以指定浮点型常量的类型。在浮点型常量后面添上 f 或者 F,编译器就会用 float 类型来处理这个常量。例如:1.5f2.1e6F。在后面添上 l 或者 L 的话,编译器会用 long double 类型来处理这个常量。例如:4.1l50.2E5L。最好用大写 L,因为小写 l

    C99 新增了一种表示浮点型常量的格式:使用十六进制前缀(0x0X0数字 0,不是字母 o ),用 pP 代替前面所说的 eE,而且阶码代表的是 2 的阶码次方。例如:

等于 25,也就是 512。这个浮点型常量转换成十进制就是:(11 + 1/16 +

注意:并非所有编译器都支持 C99 新增的这种格式!

新增的那种十六进制格式输出,但是并非所有编译器都支持。如果您要输出 long double 类型的浮点数,请用 %Lf%Le%La,或者

这必然导致上溢!因为 toobig 无法表示 3.4E38100.0f 的乘积。上溢的后果过去是没有定义的,不过现在 C 规定如果发生上溢,则产生一个表示无穷大的特殊值。因此,toobig 的值最终会变成一个表示无穷大的特殊值。进而,printf 函数会输出类似 inf 或者 infinity 的字眼。

    对一个绝对值非常小的浮点数进行除法,并且导致这个浮点数的精度降低,称之为下溢。打个比方,假设 3.1415e-10 除以 10 后,变成 0.3141e-10,这就是下溢。

    通常,double 是最好的选择,因为其精度较高,而且导致的运行时耗费相对 float 也多不了多少。

Pandas是基于NumPy库的一种解决数据分析任务的工具库

Pandas库纳入了大量模块和一些标准的数据模型,提供了高效的操作大型数据集所需的工具

Pandas库的主要功能有:

创建Series(系列)和DataFrame(数据帧)、索引选取和过滤、算术运算、数据汇总和描述性统计、数据排序和排名、处理缺失值和层次化索引等

系列与NumPy库中的一维数组(array)类似,能保存字符串、Bool值、数字等不同的数据类型

由于精度的问题,这里直接加0.0001可能数值不变,要么转成bin再+1进行处理!

精度问题通常都是b’@\x0b\xff\xff\xff\xff\xff\xff’模式,但是二进制的+1运算貌似就是很难,而且并不知道何时是真的需要+1。那运算上是否可以尝试,嗯… 其实除了网友提到的那个运算,还真没有举出反例的,用随机浮点随机一些反例吧!

平方与开平方都是没问题的,三次方不准确率高达95.8%

总之,开方的是2的次幂是准确的,虽然在256次方会提示数值过大,无法运算之类的,但是在运算之内都是准确的。几个质数偶尔准确率也相当的高。剩下的如上,三次方的准确率。

但是这个结果此时并非如上的\xff模式,甚至说随机出来的很难出现整数,纯粹是次幂结果就是不精确值吧!?

尝试下随机整数,或者顺序整数,看看其结果!

很确信的是1、2、3的三次方都没问题,但是4得3次方是不行了。而其他的未知精确结果的就不知道了。

那假设这里取得随机值是基数

这里不仅出现了ff结尾的,还有fe结尾的。而且小数点后有14、15、16位不等的结尾。如果按照这个规律去对比进位后结果,该怎么说呢还是开始递增结尾+1的思路最简单,例如86结尾的,尝试发现+4有效,顶多简单的循环四次,如果想的太复杂,可能性是一个局限。那么只要修正之前代码中,最末尾精度的问题了!貌似也并不是简单的事情!

回归原题,即便是special的开方,也只能做到如此,例如:

他的下一个值是3.392

3次方结果分别是62.99

还是小的那个更加接近63。其实最关键的是我们并不知道python的基础平方算法。只能说他的结果并不准确,但他的运算速度着实迅速,作为单纯的编程者来说,我们只是要补正误差操作!但是最好的方法就是二进制+1,毕竟判断浮点的最小精度想想都是很困难的,我们要从小数点后多少位想到小数点前多少位。

貌似又很简单,只需要转换成字符串再处理,就简单不过了!

假设一个使用e表示的数字!

这个才是最接近结果的?

所以计算机客观上的表示是.094最接近结果,也并非代码得出的.0933

毕竟几遍如浮点数,他要是结果真的如50vs99,存在吗?即便是

在这个数量级的运算误差,假设单位是1米,夸克的直径量级也不过是1e-18。而且基准单位真的后面这么串0的话,完全可以把基准单位往后设置!

所以最直接的方法就是想办法在二进制上+1!且不说效率是否比纯数学求精度,循环+精度,至少这个很计算机!至于如何实现,很遗憾的是我目前并未找到直接的转二进制方法和二进制加减法的方法。需要自己去写。至于是否有意外情况,未知!

这个操作在numpy中也有,但是效率优秀

我查了下什么是卷积,其实就是对较大数据压缩成较小数据,数据缩小后,处理量和特征都能得到提高,于是搜了下卷积与图像识别。这个也能用在音频识别上

在jupyter中直接返回结果图,相比之前的海龟画图,这个是直接给结果,而海龟是弹出以python进程的窗口,名为python turtle graphics的窗口实现的动态绘图

但是直接执行.py,他同样是python进程的窗口,不过是叫figure 1,且能拖动、放大等操作!

figure 多个窗口,多个图形

jupyter就算没有show也是会显示结果的,但这个结果不知道是否是jupyter的内置功能,即其实并未绘图,而是jupyter自动掉用了绘图并显示。

于是我写了下这个,在jupyter中,显示耗时

但是在.py运行,很明显的感觉到耗时

肯定做了较大的运算,于是jupyter应该是把已有的运算结果直接搬了出来,而非强制运算,这方面在通常变量很好理解,但是在这种绘图结果,只能进行运算后才能切身感受!

也就是image的data,而非image路径,代码保存大小和图像大小一致,至于给我个这东西,不利用浏览器保存功能,怎么复建成一个png图片,我不知道

运行.py,四个图表出现在同一个窗口下,但是每个图表仍可以独立拖动和缩放,不过设置边距仍然是当做一个对象!

作者是国人,目前就职于百度,同时还发现百度的飞桨开源计划

书中做了过多的描述,于是可以看得出,前面都是搬文档,这里是另外撰写的!

全模式 居里/居里夫人/里夫/夫人/1903/年/获/诺贝/诺贝尔/诺贝尔奖/贝尔/奖/时/做/了/精彩/演讲

精确模式 居里夫人/1903/年/获/诺贝尔奖/时/做/了/精彩/演讲

词频——你想文件频率TF-IDF算法进行关键词抽取

结巴.分析.提取标签(待提取文本,权重最大的20个词,不返回关键词权重值,包括指定词性的词)

sentence="艾萨克·牛顿(1643年1月4日——1727年3月31日)爵士,英国皇家学会会长,英国著名的物理学家,百科全书式的“全才”,著有《自然哲学的数学原理》《光学》。"

jieba支持创建自定义分词器

这里的迭代器并不能用list等转化,看来自定义模块可以接收常用函数并定义返回方式的。而for这种方式看来是最通用的!

这个仍然需要用pipe进行安装

书中例子只是个简单的代码,于是我把复杂的之前的plot画图打包了,应该说是编译,但是看来这个代码过于复杂,并没能运行成功而且有59.8MB!

之前一个单纯的抽奖的文字代码,打包后10.3MB,正常运行!但是打开时比较慢,后面允许相对较快!

于是打开优势是没有了,不适合用来制作开袋即食的小工具!

在Python中,用户可以编写具有特定功能的模块,保存到扩展名为.py的文件中。由用户自己编写的模块称为自定义模块。

(1)在pack1文件夹下添加文件__init__.py ???我尝试发现这个并非一定要有

(2)分别编写源文件A11.py和模块A12中的程序代码

场景2 调用同层的子目录下

在本场景中,源文件main.py和模块A2所在的包pack2在同一路径

(1)在pack2目录下添加文件__init__.py ???这里仍没有显示出必要性

(2)分别编写模块A2和源文件main.py中的程序代码

模块A2中的程序代码:

从上面可以看出的规律:

1、在导入模块的时候,第一档不能出现函数

2、不能只导入pack

最后一个点前必须是pack

这个pack被当做module导入了,此时没有错误,调用时错误,他无法被调用

A不能是func,最终导入不能是pack

使用Turtle绘制表面填充正方体

收尾不必是同一点,会自动以直线连接填充,若只是花了一条线段,则不会填充

2、画笔结束时呈现封闭区域,否则报错,两个封闭区域相交处不填

这段代码在jupyter运行时会不知名的报错一次,再运行才能画出来,直接运行.py没问题!

以上是书中的代码,我觉得挺烦杂的,而且这个交接点的颜色不交叉的样子

turtle是支持浮点的,不过是四舍五入,而书中例子是int截断

还有个问题就是眼镜镜片的折射问题

另外书中的例子看着好麻烦的样子,那最简化写法

如果把红色放在最后面再画,这涉及到的问题就是线条覆盖,turtle就是这样的东西,当然设计合适的话,可以再做一个混合颜色的功能,实现较好的过渡和视觉感。

至于用途,之后探索,但是可能不大适合放在web服务器端,这个运算量过大。

受用NumPy和Matplotlib对股票000001在2018年7月的交易数据进行分析并显示股票收盘价走势图

000001在~的交易数据如下所示:

本案例中调用NumPy和Matplotlib中的相关函数实现了如下功能:

(1)使用NumPy对骨片文件进行处理,需要先将股票交易文件000001_stock01.csv中的不同列数据分别督导多个数组中保存

(2)使用numpy.mean()计算收盘价和成交量的算术平均值

(5)使用numpy.ptp()函数计算股票最高波动范围、股票最低波动范围

# 计算收盘价的加权平均价格(时间越靠近现在,权重越大)

# 你是否觉得这里很奇怪,因为没有原始数据,我是从书上抄的数据,只是一小部分

# 如果目标是个多维数组,如果有axis=0或1,将计算每一组的ptp,否则只计算最大值和最小值得波动

收盘价的算术平均价格: 8.63元

成交量的算数平均值:元

收盘价的加权平均价格: 8.63元

股票最高价: 9.05元

股票最低价: 8.45元

股票最高价波动范围: 0.35

股票最低价波动范围: 0.16

使用Pandas分析股票交易数据

数据同上,不过为了Pandas添加了第一列

相对于NumPy,Pandas具有更方便、功能更强大的数据统计和分析方法

(2)使用NumPy中的np.where()函数结合在Pandas中获取的列数据对股票数据进行分组

(4)调用Pandas中的pd.corr()函数分别对股票数据进行相关性分析

1.股票最高价高于9.00元的天数: 1

3.股票数据的描述性统计:

4.股票数据的相关性分析:

使用图像处理库处理和显示图像

(2)获取图像的数据类型和图像大小

(3)使用imageio库中的imwrite()函数等修改图像颜色、图像大小,裁剪图像。

plt.axis('off') # 如果没有这句,背景色为白,有则按照PNG设置的透明

图像的数据类型: uint8

图像尺寸,通道数: (, 4)

2、输出结果显示框,选择标记,可以复制输出结果,不必要截屏

5、彻底关闭-----关闭工作空间

6、工具-选项-格式,调整字体

7、编译--链接--执行,编译--链接之后产生一个可执行文件.exe,然后vc软件请求CPU执行该文件,执行之后的结果返回到软件显示

8、ASCII码就是一种硬性规定,字符存储本质上与整数一样

9、字节就是存储数据的单位,并且是硬件所能访问的最小单位,1字节=8位

功能:将从键盘输入的字符转化为输入控制符所规定格式的数据,然后存入以输入参数的值为地址的变量中。
2、scanf("非输入控制符 输入控制符",输入参数);
原则:使用scanf前最好先使用printf输出提示信息;
scanf中尽量不要使用非输入控制符,尤其是\n;
应该编写代码对用户的非法输入做适当的处理

逻辑运算符------ ! &&(与)左边为假,右边不执行 \\(或)左边为真,右边不执行

C语言对真假表示:非0为真【1】,0为假【0】

12、流程控制-----------程序代码执行的顺序

13、文件命名时会自动加后缀.cpp,命名时不要加‘.’,否则系统不会自动加后缀.cpp,程序就没法执行,果需要加点的话,后面一定要加上.cpp

14、程序 = 算法 + 语言,1、流程 2、每个语句的功能 3、试数

15、for的范围为一个语句

18、十进制转化r进制,一直除r取即可余,余数从下往上倒序排序,

19、编程时尽量i++ 和 ++i单独成为一个语句,不要用于复合语句

从左到右执行,表达式的值为最后一项的值。

21、while(默认控制一个语句) //内部表达式不一定执行
格式:while(表达式)

do....while //内部表达式至少执行一次,多用于人机交互

22、while与for的比较,二者在逻辑上完全等价,但for的逻辑性更强
}//注意A和3的顺序不能更换,这是由for的顺序决定的。

1、用于终止循环、用于终止switch、 break不能直接用于if,除非if属于for循环内部的子句,但break终止的还是外部的for循环
2、用于多个for循环时,只用终止距离它最近的循环

用于跳过本次循环余下的语句,转去判断是否需要执行下次循环

25、数组中的元素就是变量,
用于大量同类型数据的存储与使用,
为多个变量连续分配存储空间,
所有的变量数据类型一致,
所有变量所占的字节大小一致

只有在定义数组的时候才可以整体赋值,其他情况整体赋值都是错误的
只有在定义数组的时候,‘5’即数字,表示数组长度,其他情况均表示下标,下标从0开始
一维数组名代表第一个元素的地址

1、为相似的大量的数据设计,相当于设计的一个工具,有利于程序的模块化 格式:函数类型 函数名 (参数类型 形式参数)
3、函数返回值的类型也称为函数的类型,因为如果函数名前的返回值类型 { {
和函数执行体中的return表达式的类型不一致的话,则最终函数返回值的 return 10; return;或者没有return
类型以函数名前的返回值类型为准。 } }

1、是用来终止整个被调函数的,向主调函数返回
2、如果表达式为空,则只终止函数,不返回 ( 适用于函数类型为void )

30、一个程序有且只有一个主函数
主函数可以调用普通函数
主函数是程序的入口、出口

31、浮点数是不能准确存储的

逻辑上:能够完成特定功能的独立的代码块
能够接受数据【当然也可以不接收数据】
能够对接收的数据进行处理
能够将数据处理的结果返回【当然也可以不返回任何值】
总结:函数是一个工具,它是为了解决大量类似问题而设计的,函数可以当作一个黑匣子

函数的返回值 函数的名字(函数的形参列表)
函数放在main函数前面的话不需要函数声明,放在后面的话,必须要函数声明,函数声明必须与是语句,例如:int max ( int a, int b);注意分号,
目的是告诉编译器该函数已经定义过了。

33、函数定义一定要放在函数调用前面,先定义,后调用,如果函数定义放在了函数调用后面,则在函数调用前面要加上函数前置声明。
对库函数的声明是通过 # include < 库函数所在的文件的名字.h>来实现的。

34、形参和实参的个数,位置,类型相互兼容(整形和浮点型),,,,等必须严格对应。

35、如何在软件开发中合理的设计函数来解决实际问题?
1、一个函数的功能尽量独立,单一
2、多学习,多模仿牛人的代码

局部变量:在一个函数内部定义的变量或者函数的形参,只能在本函数内部使用
全局变量:在所有函数的外部定义的变量,使用范围为从定义位置开始到整个程序结束
注意的问题:在一个函数内部,如果定义的局部变量的名字和全局变量的名字一样,局部变量会屏蔽全局变量。

37、指针和地址同一个含义,指针变量或者地址变量

int * p; //p是变量的名字,int * 为数据类型,表示p变量存放的是int类型变量的地址
//所谓int *类型,就是存放int变量地址的类型

1、p保存了i的地址,因此p指向了i;
2、p不是i,i也不是p,修改p不影响i,修改i不影响p;
3、如果一个指针变量指向了某个普通变量,则
4、*p就是以p的内容(i的地址)为地址的变量

38、 指针就是地址,地址就是指针,
地址就是内存单元的编号;
指针变量是存放地址的变量;
指针和指针变量是两个不同的概念,但是通常我们叙述时会把指针变量简称为指针

表示一些复杂的数据结构
快速的传递数据,减少内存的损耗
使函数返回一个以上的值
是理解面向对象语言中引用的基础
总结:指针是c语言的灵魂

地址:内存单元的编号,从0开始的非负整数,范围:【一般4G, 0--4G-1】
指针:指针就是地址,地址就是指针,指针变量就是存放内存单元编号的变量
指针本质就是一个操作受限的非负整数,只能进行减运算

2、定义指针变量; int * p; 定义了一个名字叫p的变量,int * 表示p只能存放整形数据的地址
3、指针运算符;该运算符放在已经定义好的指针变量的前面,如果p是一个已经定义好的指针变量,则 * p表示以p的内容为地址的变量

43、如何通过被调函数修改主调函数普通变量的值
1.实参必须为该普通变量的地址
2.形参必须为指针变量
3.在被调函数中通过 【 * 形参名 = ........ 】 的方式就可以修改主调函数相关变量的值

一维数组名,是个指针常量,存放的是一维数组第一个元素的地址,a == &a[0];

确定一个数组需要几个参数【如果一个函数要处理一个一维数组,则需要接收该数组的哪些信息】
、 数组第一个元素的地址

指针变量不能+和*/,只能相减【如果两个指针变量指向的是同一块连续空间中的不同存储空间,则可以相减】
一个指针变量到底占用几个字节
功能:返回值就是该数据类型所占的字节数
功能:返回值就是该变量所占字节数

假设 p 指向char类型变量【1个字节】
假设 q 指向char类型变量【4个字节】
假设 r 指向char类型变量【8个字节】
p q r本身所占字节数是否一样?答:一样,都是4个字节,与所指向的变量类型无关
总结:一个指针变量,无论他指向的变量占几个字节,该指针变量只占4个字节
一个变量的地址,是用该变量首字节的地址来表示

45、数组是一片连续的地址空间,字节的地址用4个字节去保存,32根地址总线,4*8=32,共4G大小
指针变量均占4个字节,只有用malloc分配的空间是动态,其他均为静态

46、关于改变形参能否改变实参的总结
如果不用指针是无法通过形参去改变实参的,因为程序会临时单独为形参分配一个内存存储空间,和实现的
内存存储空间是不同的,所以改变形参无法改变实参,并且函数调用结束,会释放形参的空间。
对于指针来说,将实参数组名 a【数组的起始地址】和数组长度 5 传递给形参 int * pArr, int len,
则pArr也就作为数组名【整形指针类型】,指向了是a数组的内存存储空间的起始地址,len赋值为了数组长度,
此时形参pArr 和len 可以唯一的确定实参中a数组,二者是完全等价的,系统并没有单独为形参临时开辟存储空间,
由于pArr指向了实参a数组,所以对于pArr的操作是直接建立在实参a数组的内存空间上的,pArr == a;
关键:理解清楚对形参的处理的内存是否是实参的内存,归结到底是内存存储的问题
47、动态内存分配【重点,难点】
1、数组长度必须事先制定,且是能是常整数,不能是变量
2、传统形式定义的数组,系统为该数组分配的存储空间就会一直存在,程序员无法手动编程释放存储空间,只能在本函数运行完毕时由系统自动释放
3、数组长度不能在函数运行过程中动态的扩充或缩小
数组长度一旦定义,就不能改变
4、A函数定义的数组,在A函数运行期间可以被其他函数使用
A函数结束之后,其中定义的数组就不再能被其他函数使用
传统方式定义的数组不能跨函数使用
为什么需要动态分配内存
动态数组很好的解决了传统数组的四个缺陷

动态内存分配举例--动态数组的构造

静态内存和动态内存的比较
静态内存是由系统自动分配,由系统自动释放
动态内存是由程序员手动分配,手动释放,函数终止内存不释放

49、C语言没有规定int类型占用4个字节,不同的编译软件可能有不同的字节数

为什么需要结构体?为了表示一些复杂事物,而普通的基本类型无法满足需求
什么叫结构体?把一些基本类型数据组合在一起形成的一个新的复合数据类型
3种方式,//第一种[推荐使用],这只是定义了一个新的数据类型,没有定义变量

定义的同时可以整体初始化
如果定义完之后,只能单个赋值
如何取出结构体变量中的每一个成员
1、结构体变量名.成员名
2、指针变量名->成员名 (更常用) //在计算机内部会被转化成(*指针变量名).成员名来执行,二者等价

pst所指向的结构体变量中的age这个成员,
结构体变量不能进行加减乘除,但可以相互赋值,st1 = st2;是可以的
结构体变量和结构体变量指针作为函数参数传递的问题【推荐使用结构体指针变量作为函数参数传递】
动态构造存放学生信息的结构体数组
动态构造一个数组,存放学生成绩,并按成绩输出
把一个事物所有可能的取值一一列举出来

^------按位异或【相同为0,不同为1】
<<----按位左移,右边补0,左移n位==乘以2的n次方,执行速度快
>>----按位右移,左边一般补0,也可能补1,右移n位==除以2的n次方,【前提是数据不能丢失,溢出】
位运算符的现实意义:对数据的操作精确到每一位

也叫 符号-绝对值码,最高位0表示正,1表示负,其余二进制位是该数字绝对值的二进制位
原码简单易懂,加减运算复杂,0的表示不唯一,存在加减乘除四中运算,增加cpu的复杂度

运算不便,也没有在计算机中应用

表示数值平移n位,n称为移码量
移码主要用于浮点数的阶码的存储
正整数转二进制:除2取余,直至商为零,余数倒数排序
负整数转二进制:先求与该负数相对应的正整数的二进制代码,然后将所有位取反,末尾加1,不够位数时,左边补1
如果首位是0,则表明是正整数,按普通方法求
如果首位是1,则表明是负整数,将所有位取反,末尾加1,所得数字就是该负数的绝对值【验证的话要写够32位,因为机器默认补0】

在Visual C++ 6.0中的一个int 类型的变量所能存储的数字范围?
int【4个字节,32位】类型变量能存储的最大正数用十六进制表示:7FFFFFFF
int【4个字节,32位】类型变量能存储的绝对值最大负整数用十六进制表示:


最小负数的二进制代码?
最大正数的二进制代码?
数字超过最大正数会怎样?

通俗定义:解题的方法和步骤

狭义定义:对存储数据的操作
对不同的存储结构要完成某一功能所执行的操作是不一样的
这说明算法是依附于存储结构的,不同的存储结构,所执行的算法是不一样的

广义定义:广义的算法也叫泛型,无论数据是如何存储的,对该数据的操作都是一样的

我们至少有两种结构可以存储数据
缺点:需要一个连续的很大内存,插入和删除元素效率低

首结点:存放第一个有效数据的节点
尾节点:存放最后一个有效数据的节点
头结点的数据类型和首节点的类型是一模一样的
头结点是首节点前面那个节点
头结点并不存放有效数据
设置头结点的目的是为了方便对链表的操作
头指针:存放头结点地址的指针
确定链表只需要一个元素【头指针】
优点:插入删除元素效率很高,不需要一个很大的连续内存
缺点:查找某个元素的效率低

51、66.6在C中默认为double类型,66.6f或者66.6F则为float类型,并且浮点型数据存储是非准确存储的
在使用结构体的时候,编译一下,便于输入结构体成员
在函数调用中,要想改变某个数的值,只能发送该值的地址作为实参,其他方式均不可能修改该值
给指针类型的变量命名时前面最好加个p
一个指针变量永远只占4个字节,因为一个变量的地址永远只用它第一个字节的地址表示,认为是起始地址,
从开始往下1个或者4个或者8个字节作为一个变量是由变量数据类型决定的,char,int ,double
硬件按字节编号【地址,8位】
char * p = &i;//p存放变量i的第一个字节的地址,并且p指向一个字节,所以p+1,指针以1个字节为单位移动
int * p = &i;//p存放变量i的第一个字节的地址,并且p指向从首地址向下4个字节的变量,即p指向4个字节,并将其作为一个变量,所以p+1,指针以4个字节为单位移动
double * p = &i;//p存放变量i的第一个字节的地址,并且p指向从首地址向下8个字节的变量,即p指向8个字节,并将其作为一个变量,所以p+1,指针以8个字节为单位移动
53、 整形数组的赋值和输出都只能借助于for循环
字符型数组【字符串】可以直接输入直接输出

54、默认位数不够,左边补0
字符本质上使用整数存储的
构造函数如果只需要判断真假【true false】,函数类型可以设置为【bool】类型
逻辑运算符的结果只能是真或假【0 or 1】
分配内存:操作系统把某一块内存空间的使用权利分配给该程序
释放内存:操作系统把分配给该程序的内存空间的使用权利收回,该程序不能够再使用这一块内存空间
附注:释放内存不是把该内存的内容清零
1、变量为什么必须初始化?不初始化则变量就是垃圾值
2、详细说明系统是如何执行int i = 5;这个语句的?
1、Vc++6.0软件请求操作系统为i分配 存储空间
2、操作系统会在内存中寻找一块空闲区域,把该区域当做i来使用
3、VC++6.0会把i和这块空闲区域关联起来,今后对i的操作就是对这块空闲区域的操作
4、把5存储到i所关联的内存区域中
附注:所谓内存区域就是内存的一块存储单元
3、函数的优点:避免重复操作,有利于程序的模块化
4、什么是指针?什么是地址?什么是指针变量?三者的关系?
地址是内存单元的编号 指针就是地址 指针和地址是一个概念
指针变量就是存放内存单元编号的变量 指针变量和指针是两个不同的概念,只不过习惯称指针变量为指针
5、请写出静态变量和动态变量的异同?
不同:静态变量是系统自动分配,自动释放,程序员无法在程序运行的过程中手动分配,也无法手动释放
静态变量是在栈中分配的,只有在函数终止之后,静态变量的存储空间才被系统自动释放
动态变量是由程序员手动分配手动释放的,程序员可以在程序运行过程中手动释放
动态变量是在堆中分配,程序员可以在程序运行的任何时刻都可以手动释放动态变量的空间,不需要等到函数结束
6、重点:流程控制,函数,指针,静态内存和动态内存
在多层循环中,break只能终止最内层包裹它的那个循环
else只能跟离他最近的if匹配

56、二进制全部为零的含义 ---00000 的含义
2、字符串结束标记符‘\0’
NULL表示的是0,而这个零不代表数字零,而表示的是内存单元的编号为0,0号地址
我们计算机规定了,以零为编号的存储单元的内容不可读,不可写

我要回帖

更多关于 为什么计算器算出来的数不对 的文章

 

随机推荐