C言語のポインター定数ポインター、ポインター定数、定数を指すポインター定数

定数ポインターとポインター定数(ポインターは定数です)

メモリ/概要

定数ポインター:
1、意味:定数ポインター-ポインターが指すコンテンツは定数
2の構文:定数の前、ポインターの後、constが前に、*がback-constに*

ポインタ定数:
1、意味:ポインタ定数-ポインタ自体は定数
2、構文:ポインタの前、定数の後、*の前、constの後に-* const

定数ポインタ(一般的に使用されます!重要!)

定数ポインター:ポインターが指す内容は定数です
構文:const *

図1は、一定のポインタは、ポインタ変数の値によって変更されないと述べた
が、別の参照変数の値によって変更することができます

int main() {
//--------------------------------------  验证: 不能通过常量指针来改变变量的值
    int const *p1;  // 常量指针
    int a = 4;
    p1 = &a;
//    *p1 = 5;  // 编译错误,不能通过常量指针p来改变值

//--------------------------------------  验证: 变量中的值可以通过其他的引用、或变量自身来改变
    a = 5;  // 正确,此时*p==5
    int *p2 = &a;  // 另一个指针
    *p2 = 6;  // 正确,此时*p==6
}

2.定数ポインタが指す値は変更できませんが、ポインタ自体が変更できないわけではなく、
定数ポインタが別のアドレスを指す場合もあります。

//--------------------------------------  验证: 常量指针指向的地址可以更改
int main() {
    int a = 4;
    int b = 5;
    const int *p;  // 常量指针
    p = &a;  // 正确,此时*p==4
    p = &b;  // 正确,此时*p==5
//    *p = 6;  // 编译错误,不能通过常量指针p来改变值
}

ポインター定数(一般的には使用されません)

ポインタ定数はを参照するポインタ自体一定であると、他のアドレスにすることができなくなった時点
構文:* constの

1.ポインター定数が指すアドレスは変更できませんが、アドレスに格納されている値は変更でき
、ポインターのアドレスを指す他のポインターによって変更できます。

int main() {

//--------------------------------------  验证: 指针常量指向的地址不能改变,但是地址中保存的数值是可以改变的
    int a = 4;
    int b = 5;
    int *const p = &a;  // 指针常量  // 要马上初始化(同常量),之后无法赋值
//    p = &b;  // 错误,无法赋值
    *p = 10;  // 正确
//--------------------------------------  验证: 可以通过其他指向 该指针的地址 的指针来修改(不重要,几乎不会用到)
    int **pp = &p;  // 正确,但会出现警告
    printf("%d", *p);
    *pp = &b;  // 正确
    printf("%d", *p);
}

定数定数へのポインタ(一般的には使用されません)

定数への定数ポインタは、上記の2つの組み合わせです。
構文:const * const

int const *const p;
元の9件の記事を公開 いいね2 訪問559

おすすめ

転載: blog.csdn.net/qq_40939814/article/details/103910167