常量指针
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;
}