指针——指向内存地址的变量

指针式C语言一个重要的数据类型。指针可以访问简单的数组、字符串等,它是C语言的核心所在,用好指针可以在C语言程序开发中起到事半功倍的效果。

1.什么是指针

指针式一个变量,其值为另一个变量的地址,即内存位置的直接地址。

定义指针

跟其他变量和常量一样,必须在使用之前对其进行声明。指针变量声明的一半形式为:

type *var-name;

上面type指的是指针的数据类型,它必须是一个有效的C语言数据类型,var-name为指针变量的名称。下面给出一下示例:

int *ip;         //一个整型的指针
double *dp;  //一个double的指针
float *fp;      //一个浮点型的指针
char *ch;      //一个字符型的指针

使用指针

使用指针一般会进行以下几个步骤:定义一个指针变量、把变量地址赋值给指针、访问指针变量中可用地址的值。下面一个简单的例子进行说明:

 1 #include <stdio.h>
 2  
 3 int main ()
 4 {
 5    int  var = 20;   /* 实际变量的声明 */
 6    int  *ip;        /* 指针变量的声明 */
 7  
 8    ip = &var;  /* 在指针变量中存储 var 的地址 */
 9  
10    printf("Address of var variable: %p\n", &var  );
11  
12    /* 在指针变量中存储的地址 */
13    printf("Address stored in ip variable: %p\n", ip );
14  
15    /* 使用指针访问值 */
16    printf("Value of *ip variable: %d\n", *ip );
17  
18    return 0;
19 }

输出:

Address of var variable: 006FFB68
Address stored in ip variable: 006FFB68
Value of *ip variable: 20

2.数组与指针的关系

定义一个数组时,系统会在内存中为该数组分配一个储存空间,数组名就是数组在内存中的首地址,内存单元的地址就是指针,因为数组名也是一个指针。

一维数组

int *p,a[5];
p=a;             //数组名也是一个指针
p=&a[0];       //也可以这样赋值,因为数组名也就是a的首地址       

下面一个简单例子说明:

 1 #include<stdio.h>
 2 
 3 int main()
 4 {
 5     int a[10];        
 6     int *p,i;                    //定义指针
 7     printf("请输入10个数:\n");
 8     for(i=0;i<10;i++)           //输入10个整数
 9     {
10         scanf("%d",&a[i]);
11     }
12     printf("\n");
13     for(p=a;p<(a+10);p++)       //利用指针输出数组中的这10个整数
14     {
15         printf("%d ",*p);
16     }
17     printf("\n");
18     return 0;
19 }

输出:

请输入10个数:
1 2 3 4 5 6 7 8 9 1

1 2 3 4 5 6 7 8 9 1
请按任意键继续. . .

二维数组

 

上一篇:17秋 软件工程 第六次作业 Beta冲刺 Scrum5


下一篇:C Programming Test And Answer 04