到vb版问指针?天哪,真是哪壶不开提哪壶。呵呵。
用C语言解释一下先:指针实际上也是一个变量,它代表着计算机当前要处理问题所在
的位置。指针是C语言中的重要部分之一,在C语言中的使用特别广泛
它可以方便地表示复杂的数据,灵 活 使 用 字 符 串 和 数 组 。
有人说,学习C语言的指针太难,为了解决这一问题,朋友们在
学习时,你能理解多少就理解多少,别一味地追求全部理解,你只要
能一知半解地学下去,你只要认真把例子们一一练过,把解释读下去
过一段时间,当再回过头来看时,你已经学会了一些,再多学一点,
可能就容易一些了。再过一段时间,再回来看,你可能会得就更多了
main()
{ int *p; /*定义一个指针 */
int a=100; /*定义一个整型变量a */
p=&a; /*把a的地址赋值给指针 */
printf("p=%d *p=%d\n",p,*p);
printf("&a=%d a=%d\n",&a,a);
}
编译后运行,屏幕上出现:p=-32 *p=100
&a=-32 a=100 在解释上程序之前,我们先学两个运算符:
(1) & : 取地址运算符 (不同于逻辑运算符&&)
(2) * : 指针运算符
上例中*p表示指针变量p所指向的数据,即100,而p本身是-32,
-32就是a的值(100)所放的地址。打个比方:100这个数据在旅馆登记
时,计算机给它分配的房间号是-32,-32就是指针变量p,p就是房间
号;-32号中住的客人是100,即p房间里住的是100,表示为*p=100。
如果朋友们还是不理解,别着急,只要你认真练习了上面的程序
就行了。下面我们再写一个利用指针判断两个数大小的程序。main()
{ int *p1,*p2,*p,x,y;
printf("请你输入任意两个整数<用空格分开>:");
scanf("%d%d",&x,&y);
p1=&x;
p2=&y;
if(x>y) /*按从小到大顺序排列*/
{ p=p1;p1=p2;p2=p;} /*如果x大,就把x,y的地址进行交换
相当于把x,y的房间号进行交换*/
printf("\nx=%d y=%d\n",x,y);
printf("小数是%d,大数是%d\n",*p1,*p2);
}请你输入任意两个整数<用空格分开>:13 10
x=13 y=10
小数是10,大数是13 上例中x,y相互交换“房间”后,本身的值并没有变,但它们所
住的位置“房间号”却发生了变化。
关于scanf()函数,我想再多说几句。当 前 面 的 “格式”是
“%d%d”时,在输入数据时,数据间要用空格分开;是“%d,%d”时
在输入时,数据用逗号分开;是“%d-%d”时,数据用“-”号分开。
下面我们再看看指针在数组中的灵活运用。main()
{ int sh[9]={4,7,2,9,1,6,8,3,5};
int *p,pp,i,j;
for(i=0;i<8;i++)
for(j=0;j<8-i;j++)
if(sh[j]>sh[j+1]) /*按升序排列*/
{
pp=sh[j];
sh[j]=sh[j+1];
sh[j+1]=pp;
}
p=sh;
for(i=0;i<9;i++)
printf("%d ",*p++);
}
上面程序用到了数组,数组的定义是:
数组变量名[数组中元素个数]
数组可以在定义时赋初值,也可以用输入函数输入。下面的程序
片段就是它的应用。输入9个整数,把这9个整数赋值给数组:
printf("请输入9个整数<每个数都用回车结束>");
for(i=0;i<9;i++)
scanf("%d",sh[i]);
用指针来描述和使用数组简直太方便了。我们再看下面的No16.c
/*No16.c*/
main()
{ int *p,sh[6],i;
p=sh; /*此时指针已指向第一个元素*/
for(i=0;i<6;i++)
*p++=i+1; /*给当前指针所指的数组赋值*/
/*结束时的指针已指向第六个元素*/
for(i=0;i<6;i++) /*用数组来输出数组元素*/
printf("%d ",sh[i]);
p=sh; /*把指针移到数组的第一个元素*/
printf("\n");
for(i=0;i<6;i++) /*用指针来输出数组*/
printf("%d ",*p++);
}
程序第6行中“*p++”不是把指针*p加1的意思,它的作用是指针
向后移一个元素,“*p--”就是指针向前移一个元素。“p=sh”就是
让指针指向数组sh的第一个元素,这一表达式也就把数据和指针联系
了起来。
用C语言解释一下先:指针实际上也是一个变量,它代表着计算机当前要处理问题所在
的位置。指针是C语言中的重要部分之一,在C语言中的使用特别广泛
它可以方便地表示复杂的数据,灵 活 使 用 字 符 串 和 数 组 。
有人说,学习C语言的指针太难,为了解决这一问题,朋友们在
学习时,你能理解多少就理解多少,别一味地追求全部理解,你只要
能一知半解地学下去,你只要认真把例子们一一练过,把解释读下去
过一段时间,当再回过头来看时,你已经学会了一些,再多学一点,
可能就容易一些了。再过一段时间,再回来看,你可能会得就更多了
main()
{ int *p; /*定义一个指针 */
int a=100; /*定义一个整型变量a */
p=&a; /*把a的地址赋值给指针 */
printf("p=%d *p=%d\n",p,*p);
printf("&a=%d a=%d\n",&a,a);
}
编译后运行,屏幕上出现:p=-32 *p=100
&a=-32 a=100 在解释上程序之前,我们先学两个运算符:
(1) & : 取地址运算符 (不同于逻辑运算符&&)
(2) * : 指针运算符
上例中*p表示指针变量p所指向的数据,即100,而p本身是-32,
-32就是a的值(100)所放的地址。打个比方:100这个数据在旅馆登记
时,计算机给它分配的房间号是-32,-32就是指针变量p,p就是房间
号;-32号中住的客人是100,即p房间里住的是100,表示为*p=100。
如果朋友们还是不理解,别着急,只要你认真练习了上面的程序
就行了。下面我们再写一个利用指针判断两个数大小的程序。main()
{ int *p1,*p2,*p,x,y;
printf("请你输入任意两个整数<用空格分开>:");
scanf("%d%d",&x,&y);
p1=&x;
p2=&y;
if(x>y) /*按从小到大顺序排列*/
{ p=p1;p1=p2;p2=p;} /*如果x大,就把x,y的地址进行交换
相当于把x,y的房间号进行交换*/
printf("\nx=%d y=%d\n",x,y);
printf("小数是%d,大数是%d\n",*p1,*p2);
}请你输入任意两个整数<用空格分开>:13 10
x=13 y=10
小数是10,大数是13 上例中x,y相互交换“房间”后,本身的值并没有变,但它们所
住的位置“房间号”却发生了变化。
关于scanf()函数,我想再多说几句。当 前 面 的 “格式”是
“%d%d”时,在输入数据时,数据间要用空格分开;是“%d,%d”时
在输入时,数据用逗号分开;是“%d-%d”时,数据用“-”号分开。
下面我们再看看指针在数组中的灵活运用。main()
{ int sh[9]={4,7,2,9,1,6,8,3,5};
int *p,pp,i,j;
for(i=0;i<8;i++)
for(j=0;j<8-i;j++)
if(sh[j]>sh[j+1]) /*按升序排列*/
{
pp=sh[j];
sh[j]=sh[j+1];
sh[j+1]=pp;
}
p=sh;
for(i=0;i<9;i++)
printf("%d ",*p++);
}
上面程序用到了数组,数组的定义是:
数组变量名[数组中元素个数]
数组可以在定义时赋初值,也可以用输入函数输入。下面的程序
片段就是它的应用。输入9个整数,把这9个整数赋值给数组:
printf("请输入9个整数<每个数都用回车结束>");
for(i=0;i<9;i++)
scanf("%d",sh[i]);
用指针来描述和使用数组简直太方便了。我们再看下面的No16.c
/*No16.c*/
main()
{ int *p,sh[6],i;
p=sh; /*此时指针已指向第一个元素*/
for(i=0;i<6;i++)
*p++=i+1; /*给当前指针所指的数组赋值*/
/*结束时的指针已指向第六个元素*/
for(i=0;i<6;i++) /*用数组来输出数组元素*/
printf("%d ",sh[i]);
p=sh; /*把指针移到数组的第一个元素*/
printf("\n");
for(i=0;i<6;i++) /*用指针来输出数组*/
printf("%d ",*p++);
}
程序第6行中“*p++”不是把指针*p加1的意思,它的作用是指针
向后移一个元素,“*p--”就是指针向前移一个元素。“p=sh”就是
让指针指向数组sh的第一个元素,这一表达式也就把数据和指针联系
了起来。
AddressOf
VarPtr()
StrPtr()
ObjPtr()也都可以得到指针!!呵呵,VB也不差呀!!
http://www.csdn.net/develop/author/netauthor/AdamBear/