| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 22079 人关注过本帖, 3 人收藏
标题:C日记~立标记~
只看楼主 加入收藏
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 130楼 九转星河
囧~根本集中不了注意力听课~总喜欢天马行空~看别的东西去了~不管啦~明天要回校~就是这样~~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-29 22:52
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
突然发现了char a[]="123";和cahr* a="123";有什么不同了~

相信稍微有点基础的都知道其中的区别是前者数据可以改写后者只可以读取但不可改写~~

不过我推理前者a的地址和"123"这个常量的首地址是不同的~
因为双引号里面的内容应该是在预编译的时候实现的~是个常量~~
那就可以这样解释了~char a[]="123";有可能编译器是把字符串copy到a里面~不过这个不能用打印验证"123"和a的值是否相等~

这里还有一个问题就是char a[]="123";和char a[4]="123";这还是有不同的~前者没有指明分配空间~所以推测编译器有两种可能的行为~第一种是先获取字符串的总长度再分配空间~但这样获取长度的过程明显需要时间~第二种是边赋值字符边记录空间大小~所以如果细的来说char a[]="123";的执行效率并会比char a[4]="123";的要低一些~~

然而cahr* a="123";这个a是个变量~可以改变的~而且其值正是"123"的首地址值~~

所以得出一个结论就是用指针引用字符串的效率一般会比用数组的要高~

[此贴子已经被作者于2017-5-31 01:03编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-31 00:54
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
突然发现一些好好玩的现象~

cahr* a="123";
char* b="123";

这里a和b的值是相等的~也就是说如果两个字符串是等价的话~编译器为了节省空间会把相同的两个字符串看成是一个处理的~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-31 00:57
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 133楼 九转星河
正常来说编译器一般会对编译的时间和空间进行合理的优化~~所以一般来说如果要检验是否存在相等的字符串是否相等要遍历一次字符串集合~~这里需要一些时间~

这里有编译器选择的是空间优化优先的现象~
但~实际上呢~这种优化会额外消耗编译时间么?~

所以问题来了~编译器如果知道两个字符串是否相等的进而是否把两个字符串归纳为一个?~
这和编译器的行为有关~
这里可以推测一下~
编译器先从编辑器上获取字符信息应该是一种键树(字典树)的结构来处理的~如果树的两条轨一样则意味着两个字符串相等~~则可以获取同一个地址~~应该是这样~


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-31 01:21
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
最近打算好好休息一下~没啥动力打码了~~我可不敢想象自己打码打得像个大妈一样~~~~无事顶多上来灌灌水~~做个键盘侠也不错~~打码部分论坛就先交给有能力有兴趣的接手了~就是这样~~~~~~~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-31 15:22
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
看到最近这么多大数运算还是忍不住灌水一下~

其实计算机根本没有"加减乘除"这些概念~有的只是位运算~其实减法是在对应做加法的位运算的基础用补码实现的~
这也是相对于用十进制方式来说二进制的一个巨大的优势所在~

一个unsigned char型255+1=0;了~嗯嗯~于是一种利用补码原理进行大数运算的构思就渐渐成型了~~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-31 18:57
sharplong
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:122
专家分:121
注 册:2017-3-27
收藏
得分:0 
都不好意思灌水了,这灌水贴太专业

跟据科学研究呢,拥有一个良好的头像呢,有助于提高帖子关注度,和被友好对待的可能性:)准确来说呢,其实,我是一个演员....和兼职汽车维修员
2017-05-31 23:27
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 137楼 sharplong
随意~有感而发~都没有想到自己专业不专业~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-06-01 06:07
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
昨晚连夜自己琢磨了个AVL树结构以及旋转方式~虽然可以进行简单旋转~不过在高度调整上还有问题~预测实现还需要一段时间(我指的是自己消化而不是纯搬代码)
发现bug原来某些情况要连续旋转几次才能达到平衡要求~还要标记节点高度~
感觉框架还要大改~

@renkejun1942
还有在研究二叉树么~看看谁能先把AVL树弄出来~~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-06-06 10:09
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
回复 139楼 九转星河
要写的话早就可以写出来了呀。
我还继续磨蹭着,要实际写的话,应该是你吧。

AVL树就实现插入和删除就可以了,其他的函数跟普通的二叉搜索树是一样的。

我从实现二叉树之后到现在,都一直在看表和树,但是表只涉及到最初级的,而且都很理论,所以最近几乎没有实际写过代码,一直在这些东西中往返,但是收获也挺多。

[此贴子已经被作者于2017-6-6 11:01编辑过]


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-06-06 10:51
快速回复:C日记~立标记~
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034004 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved