||
3、数组和指针的关系
数组的数组名其实可以看作一个指针。
例九:
Dim MyArray(9) as long={0,1,2,3,4,5,6,7,8,9}
Dim value as long
Value = MyArray(0) /’也可以写成:value=*MyArray ‘/
Value = Myarray(3) ‘也可以写成:value = *(myarray+3)
Value=MyArray(4) ‘也可以写成:value=*(MyArray +4)
一般而言 数组名 Myarray 代表数组本身,类型是 long,但如果把 array 看做指针的话,它指向数组的第 0 个单元,类型是 long ptr , 所指向的类型是数组单元的类型即long。
因此*Myarray 等于 0 就一点也不 奇怪了。
同理,Myarray+3 是一个指向数组第 3 个单元的指针,所以 *(array+3)等于 3。
其它依此类推。
用下图来显示可能更直白一点:
注:在FreeBasic中,数组下标的表示法是A(i),指针数组是用P[i]表示,这两者有区别。
4、指针的运算
4.1指针的赋值运算
指针可以加上或减去一个整数。
指针的这种运算的意义和通常的数值的加减运算的意义是不一样的,以单元为单位。
例二:
Dim a(20) as string
Dim P as string ptr
P=@a(0)
P +=1
说明:在p +=1中,指针变量P被加了1。编译器是这样处理的:
它把指针P的值加上了sizeof(string)
注:两个指针不能进行加法运算,这是非法操作。因为进行加法后,
得到的结果指向一个不知道指向的地方,而且毫无意义。
|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )
GMT+8, 2024-11-25 07:19 , Processed in 0.066684 second(s), 17 queries .
Powered by Discuz! X3.3
© 2001-2017 Comsenz Inc.