常量指针

int a = 10; int b = 10;

const int * p = &a; //指针指向的值不可以改,指针的指向可以改

*p = 20; //错误 p = &b; //正确

指针常量

int const p = &a; //指针的指向不可以改,指针指向的值可以改 p = 20; //正确 p = &b; //错误

const又修饰指针又修饰常量

const int const p = &a; //指针的指向不可以改,指针指向的值也不可以改

主要看const后面修饰的是指针还是常量,是指针则是常量指针,是常量则是指针常量 修饰指针:const int p则 p不能被修改 修饰常量: const p 则p不能被修改

#include <iostream>
using namespace std;
#include <string>
#include <math.h>

struct student { int age; string name; /* data */ };

// 将函数中的形参改为指针可以减少内存空间,不会复制新的副本出来 void printstudent(const student * s){ // s->age = 33; //加入const后一旦有修改的操作就会报错 cout << s->name << s->age << endl; }

int main(int argc, char const *argv[]) { student stu = {23, “SPP”}; student * p = & stu; // printstudent(p);

return 0;

}