C语言的指针

指针常量:

定义方式:

#include <stdio.h>
main()
{
   int a = 10;
   int * const pi=&a;  /*定义一个指针常量*/
   a = 20;
   *pi = 35;
   printf("%d\n",a);
   printf("%d\n",*pi);
}

指针常量的意思是本身是常量,它自己的值不能被改变,但是它所指向的地址空间却不是常量,是可以被改变的

例如上面的*Pi=35

#include <stdio.h>
main()
{
   int a = 10;
   int b = 20;
   int * const pi=&a;  /*定义一个指针常量*/
   pi = &b;               //error 试图修改指针常量的值
   printf("%d\n",*pi);

常量的指针

定义方式:

#include <stdio.h>
main()
{
   const int a = 10;
   const int b = 120;
   const  int *  pi=&a; //定义一个常量的指针,指针必须指向一个常量
   printf("%d\n",*pi);
   pi = &b;
   printf("%d\n",*pi);
}

常量的指针,本身的值,是可以改变的,如上例,但是所指向的地址的内容,却不能被改变,如下例:

#include <stdio.h>
main()
{
   const int a = 10;
   const int b = 120;
   const  int *  pi=&a;
   *pi = 100;              //编译器会报错
   printf("%d\n",*pi);
}

但是常量的指针,可以指向普通的变量地址,只是不能用*pi的方式来修改变量的值,如下例会报错

#include <stdio.h>
main()
{
   int a = 10;
   const  int *  pi=&a;
   *pi = 100;                //error

   printf("%d\n",*pi);

但是这样却可以

#include <stdio.h>
main()
{
   int a = 10;
   const  int *  pi=&a;
   a= 100;                //ok

   printf("%d\n",*pi);

 

指向常量的指针常量

#include <stdio.h>
main()
{
   int a = 10;
   int b = 20;
   const int * const pi=&a;  /*定义一个指针常量*/
   printf("%d\n",*pi);
}

指向常量的指针常量,也就是它本身的值不能改变,它指向的地址空间的值也不能改变

#include <stdio.h>
main()
{
   int a = 10;
   int b = 20;
   const int * const pi=&a;  /*定义一个指针常量*/
   pi = &b;  //error 试图修改指针的值
   printf("%d\n",*pi);
}

#include <stdio.h>
main()
{
   int a = 10;
   int b = 20;
   const int * const pi=&a;  /*定义一个指针常量*/
   *pi = 200;  //error 试图修改指针所指向的变量的值
   printf("%d\n",*pi);
}

posted @ 2010-06-17 10:43  朱颂东  阅读(850)  评论(0编辑  收藏  举报