指向非常量数据的常量指针(指针是const)
- 表示一旦得到某个变量的地址,不能再指向其他变量
- int * const q = &i; //q是const(q的值不可以改变,q的值是永久的)
- *q = 26; //OK
- q++; //ERROR
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<iostream>
using namespace std;
int main()
{
printf("指针和const---------------\n");
int x, y;
int *const q_ptr = &x;
*q_ptr = 24;
printf("*q_ptr value %d\n", *q_ptr);
//q_ptr = &y; //error C3892“q_ptr”:不能给常量赋值
while (1)
{}
return 0;
}
指向常量数据的非常量指针(所指的是const)
- 表示不能通过这个指针去修改那个变量
- const int * p = &i;
- *p = 26; //ERROR (*p)是const
- i = 26; //OK(i可以变,可以被赋值)
- p = &j; //OK(p可以变,但是不可以通过p来改变i)
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<iostream>
using namespace std;
void f(const int *ptr);
int main()
{
printf("指针和const---------------\n");
int x, y;
f(&y);
while (1)
{}
return 0;
}
void f(const int *ptr)
{
*ptr = 100; //error C3892 “ptr”: 不能给常量赋值
}
指针不可以修改,通过指针不可以修改
int i;
const int * p1= &i; //通过指针不可以修改
int const* p2 =&i; //通过指针不可以修改
int *const p3 =&i;(const在*的前面还是后面)//指针不可以修改
const 数组
- const int a[] ={1,2,3,4,5}
- 数组变量已经是const的指针了,这里的const表明数组的每个单元都是const int
- 必须通过初始化进行赋值
保护数组
- 函数内部可修改数组
- int sum(const int a[],int) //禁止修改数组的值
参考:B站->《C语言入门与进阶 翁恺》视频
等有空再把自己看C++指针的内容一起整理