• 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);
    }

  • 相关阅读:
    后缀数组 POJ 3693 Maximum repetition substring
    后缀数组 POJ 2406 Power Strings
    后缀数组 SPOJ 694 Distinct Substrings
    后缀数组 POJ 3261 Milk Patterns
    后缀数组 POJ 1743 Musical Theme
    后缀数组 POJ 3974 Palindrome && URAL 1297 Palindrome
    后缀数组 POJ 2217 Secretary
    Codeforces Round #349
    后缀数组 POJ 3581 Sequence
    Codeforces Round #348(VK Cup 2016
  • 原文地址:https://www.cnblogs.com/zhusd/p/1759393.html
Copyright © 2020-2023  润新知