VB如何判断split后得到数组的长度
- 2011年10月5日
- 由Leyond
都是一些小笔记。如何判断split后得到数组的长度?Search了很久也没有找到关于Array的length或者size属性。只有找到了UBound()和LBound()函数。
UBound()返回一个 Long 型数据,其值为指定的数组维可用的最大下标。 LBound()则返回的是最小下标。如果索引是从0开始,那么数组长度:UBound(arrName) + 1。
按 ‘ C/C++ ’ 分类归档
都是一些小笔记。如何判断split后得到数组的长度?Search了很久也没有找到关于Array的length或者size属性。只有找到了UBound()和LBound()函数。
UBound()返回一个 Long 型数据,其值为指定的数组维可用的最大下标。 LBound()则返回的是最小下标。如果索引是从0开始,那么数组长度:UBound(arrName) + 1。
工作需要用VB修改一点东西。所以现学现用。程序需要读取一个文件,我们通常都会检查是否存在该文件,否侧抛出一个异常。找了半天找到一个异常类:FileNotFoundException。但是不知道怎么用呢?System.IO.FileNotFoundException。
找到另外一个解决方法,就是检查该文件是否存在,使用的是Dir()函数。
Private Sub Command1_Click()
Dim strData As String
If Dir(App.Path & "\hello.txt") <> "" Then
Open App.Path & "\hello.txt" For Input As #1
MsgBox (Input(LOF(1), 1))
Close #1
Else
MsgBox "File doesn't exist!"
Exit Sub
End If
End Sub
volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。
使用该关键字的例子如下:
int volatile nVint;
当要求使用volatile 声明的变量的值的时候,系统总是重新从它所在的内存读取数据,即使它前面的指令刚刚从该处读取过数据。而且读取的数据立刻被保存。 猛击阅读全文
类对象的构造 顺序是这样的:
1.分配内存,调用构造函数 时,隐式/显示的初始化各数据 成员
2.进入构造函数后在构造函数中执行一般计算
那么什么情况下使用构造函数的初始化列表呢?总的来说可以分为两种情况:一种是必须使用,二是为了高效。
构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式。首先来看下初始化列表的一个简单应用:
class CExample {
public:
int a;
float b;
//构造函数初始化列表
CExample(): a(0),b(8.8)
{}
//构造函数内部赋值
CExample()
{
a=0;
b=8.8;
}
};
上面的例子中两个构造函数的结果是一样的。上面的构造函数(使用初始化列表的构造函数)显式的初始化类的成员;而没使用初始化列表的构造函数是对类的成员赋值,并没有进行显式的初始化。
初始化和赋值对内置类型的成员没有什么大的区别,像上面的任一个构造函数都可以。对非内置类型成员变量,为了避免两次构造,推荐使用类构造函数初始化列表。但是某些情况下,我们必须用带有初始化列表的构造函数。 猛击阅读全文
在Stackoverflow上看到有人提到在C语言数组中有a[5]==5[a]。这涉及到指针的地址计算问题。
首先a[5],如果把a当成该数组的首地址,那么其相当于:
*(a + 5)
而5[a]则相当于:
*(5 + a)
那么从数学的角度来看,它们应该是相等的。
这个例子也正是数组名作为指针的一个直接典型。a表示的是内存地址,a[5]表示的是从起始地址a开始的第五个元素值,而这个元素的地址恰为“a+5″。
还有一个原因是,70年代设计C语言是,由于没有足够的内存空间,所以C编译器并没有做太多的语法检查,这里的X[Y]被转义为*(X+Y)。所以上面的代码解释为*(5 + a)。
英文讨论帖:http://stackoverflow.com/questions/381542/in-c-arrays-why-is-this-true-a5-5a