Chinaunix首页 | 论坛 | 博客
  • 博客访问: 482123
  • 博文数量: 98
  • 博客积分: 3265
  • 博客等级: 中校
  • 技术积分: 1227
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-23 00:29
文章分类

全部博文(98)

文章存档

2012年(6)

2011年(83)

2010年(9)

分类: C/C++

2011-04-10 00:59:28

指针变量的定义
在C程序中,存放地址的指针变量需专门定义;
int *ptr1;
float *ptr2;
char *ptr3;
表示定义了三个指针变量ptr1、ptr2、ptr3。ptr1可以指向一个整型变量, ptr2可以指向一个实型变量,ptr3可以指向一个字符型变量,换句话说, ptr1、ptr2、ptr3可以分别存放整型变量的地址、实型变量的地址、字符型变量的地址。
定义了指针变量,我们才可以写入指向某种数据类型的变量的地址,或者说是为指针变量赋初值:
int *ptr1,m= 3;
float *ptr2, f=4.5;
char *ptr3, ch='a';
ptr1 = & m ;
ptr2 = & f ;
ptr3 = & c h ;
上述赋值语句ptr1 = & m表示将变量m的地址赋给指针变量ptr1,此时ptr1就指向m。三条赋值语句产生的效果是ptr1指向m;ptr2指向f;ptr3指向ch 。用示意图6 - 3描述如下:

指针与一维数组
假设我们定义一个一维数组,该数组在内存会有系统分配的一个存储空间,其数组的名字就是数组在内存的首地址。若再定义一个指针变量,并将数组的首址传给指针变量,则该指针就指向了这个一维数组。我们说数组名是数组的首地址,也就是数组的指针。而定义的指针变量就是指向该数组的指针变量。对一维数组的引用,既可以用传统的数组元素的下标法,也可使用指针的表示方法。
inta[10],*ptr;/*定义数组与指针变量*/
做赋值操作:ptr=a;或ptr=&a[0];
则ptr就得到了数组的首址。其中,a是数组的首地址,&a[0]是数组元素a[0]的地址,指针变量ptr就是指向数组a的指针变量。

//以下标法输入输出数组各元素。

#include

main()

{

int n,a[10],*ptr=a;

for(n=0;n<=9;n++)

scanf("%d",&a[n]);//以空格间隔

printf("------output!\n");

for(n=0;n<=9;n++)

printf("%4d",a[n]);

printf("\n");

}

//采用指针变量表示的地址法输入输出数组各元素。

#include

main()

{

int n,a[10],*ptr=a;

for(n=0;n<=9;n++)

scanf("%d",ptr+n); //为什么不能是ptr++

printf("------output!\n");

for(n=0;n<=9;n++)

printf("%4d",*(ptr+n));//为什么不能是ptr++

printf("\n");

}

//利用指针法输入输出数组各元素。

#include

main()

{

int n,a[10],*ptr=a;

for(n=0;n<=9;n++)

scanf("%d",ptr++);

printf("------output!\n");

ptr=a;/*指针变量重新指向数组首址*/

for(n=0;n<=9;n++)

printf("%4d",*ptr++);

printf("\n");

}

在程序中要注意*ptr++所表示的含义。*ptr表示指针所指向的变量;ptr++表示指针所指向的变量地址加1个变量所占字节数,具体地说,若指向整型变量,则指针值加2,若指向实型,则加4,依此类推。而print f(“%4d”,*ptr++)中,*ptr++所起作用为先输出指针指向的变量的值,然后指针变量加1。循环结束后,指针变量指向如图6-6所示:

//采用数组名表示的地址法输入输出数组各元素。

#include

main()

{

int n,a[10],*ptr=a;

for(n=0;n<=9;n++)

scanf("%d",a+n);

printf("------output!\n");

for(n=0;n<=9;n++)

printf("%4d",*(a+n));

printf("\n");

}

//用指针表示的下标法输入输出数组各元素。

#include

main()

{

int n,a[10],*ptr=a;

for(n=0;n<=9;n++)

scanf("%d",&ptr[n]);

printf("------output!\n");

for(n=0;n<=9;n++)

printf("%4d",ptr[n]);

printf("\n");

}

阅读(1795) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~