关于C++的小问题问题一以常用的
第一:表示你的程序2中的 for循环中的i=o想必是i=0吧。
言归正转:首先你的两个程序的运行结果是不一样的,如果要一样的话。必须要让第一个for语句中的 i<=10 改成 i<10
问题一:
对于你的说法中,高手,何为高手?他们提倡用第2中办法,你见过世界级的高手写的程序吗。 我自己曾经认为自己是高手(在自己用C语言/
C++/JAVA语言都能自己从头到尾写出上万行代码的时候)。但现在认为自己只是一个无名小卒而已。我给你说吧。你用的第一种办法会更好,但我建议一般不用 <= 而用 < 。 为什么?我们下面谁边说说:
你的一个for语句,是从i=0开始,然后到 10 结束(或者说i的实...全部
第一:表示你的程序2中的 for循环中的i=o想必是i=0吧。
言归正转:首先你的两个程序的运行结果是不一样的,如果要一样的话。必须要让第一个for语句中的 i<=10 改成 i<10
问题一:
对于你的说法中,高手,何为高手?他们提倡用第2中办法,你见过世界级的高手写的程序吗。
我自己曾经认为自己是高手(在自己用C语言/
C++/JAVA语言都能自己从头到尾写出上万行代码的时候)。但现在认为自己只是一个无名小卒而已。我给你说吧。你用的第一种办法会更好,但我建议一般不用 <= 而用 < 。
为什么?我们下面谁边说说:
你的一个for语句,是从i=0开始,然后到 10 结束(或者说i的实际值已经变成 11 了),循环体经历了 11次 循环(其实我估计你自己想经历 10次 循环)。
你的第2个for语句表面上和第一个一样的,但是你想过没有。它循环的条件是: i!=10 跳出循环的唯一条件是 i==10 。当然按照正常状态是从0开始自动向上加,但是某些时候在循环体内部对 i 进行操作。
比如你的程序体里面有某一 if 判断如果成立就让
i=i+2;
而如果正好这个时候你的i=9;那么i就变成11了。那么你的for语句就是一个死循环了(除非还有让 i 变小的判断,但哪个时候程序将无法判断什么时候跳出循环,就连程序设计者也不知道,所以高手都不这样做,你仔细翻一翻图书馆的世界级高手写的程序就知道了),而用第一个for的时候就不存在这样的问题。
因为你判断的是 i 的值
问题二:const修饰的作用是让定义的内存空间为常量,是不可以更改的,而 static 是静态变量,静态变量是可以修改它的值的,而它与其他类型变量的区别主要是在某一些区域类内部,静态变量的存在是从程序运行开始就载入内存,到程序终止
(这里指的是C语言中的函数体内部的静态变量或全局变量,当然全局变量就没有什么必要申明为静态类型了,C++中的类内部申明的静态变量是为每一个该类的所有的对象使用一个共同的存储区,比如,一个仓库管理系统中所有的 "肥料" 都是100斤,如果要变成80斤全部变。
这就可以申明一个静态变量,从空间的角度节约开销)而普通的变量从申明开始到某一作用域结束就结束了。比如有以下函数调用过程:
void fromquit()
{
static int s;
const int b=0;
int i;
函数体;
}
void main()
{
fromquit();
}
上面的变量b是不可以更改的,s、i可以更改。
当程序被载入内存的时候s是静态的变量就载入内存了,因为系统不需要动态为它分配空间。它的存在将是达到系统的结束运行。而 b 和 i 是当main函数调用
fromquit()函数的时候分配的内存空间的。
当这个函数使用完毕后,自动是否这些空间还原给内存。下次用的时候从新申请空间。(我只是从实践经验的角度来谈论这个问题,如果某些书上的知识点问题请具体通过这些思想去思考问题)
问题3:
引用的含义类似于指针,当比指针好用。
当内部的处理就我个人的编程的经验应该是用指针处理的,只是在C++里面支持重载的时候将&运算符号重载成为一个函数的执行,内部已经给你写好了,就是用指针处理的,因为我自己也写过一个引用的重载函数.我就是用指针做的,而且我问过老师,也是指出没有指针电脑很多事情都办不到,只不过像某些语言已经给你集成了,让你用起来感觉不是指针以免你出错(一般是在指针取数据的时候和移动的时候容易越界非法).所以,你在运用的时候可以认为它是指针,但绝对不是指针.
再此,说明一点,我也是给很多同年级朋友讲解C语言问题(尤其是指针)所非常强调的问题.所谓指针,系统内部没有真正的一条线将他们连起来,如果那样理解它你使用指针经常会出错,你要怎么理解它那,指针是一个long int 类型的内存单元,它用于保存一个操作数据的内存地址(内存的按照一定规则为内存在出厂时候已经分配好地址空间以及底层数据结构).你只需要知道它保存的是某一个地方的地址就可以了,而且只能保存一个地方的物理地址,一旦改变就不能找到原来的地点了.因为它是通过地址去找数据,就好象你通过
地点去找某个人一样(比如:到315办公室去找:张三).315是其地址,张三就你要找的对象.至于常用地方就太多了,实际的系统中尤其是对象传递的时候是很有实际价值的,在很多情况下,用引用可以比用指针更简单,但某些东西用引用实现不了指针的效果.
好了,说了半天了,不过感觉没有说什么东西.如果有事情也可以找我的.
。
收起