const typedef 和指针的问题(这里必须初始化的才初始化了,不必须的则没有初始化)

这里很容易搞混;

  • tyepdef  double dou;//这里是dou是double的别名
    

      

  • #include<iostream>
    
    using namespace std;
    
    int main()
    {
    	typedef char *pstring;	//pstring实际上是指向char的指针。
    
    	const pstring cstr = 0;	//cstr 是指向char 的常量指针
    	const pstring *ps;	//ps是一个指针,他的对象是指向char的常量指针
    
    	const char *str = 0;	//声明了一个指向const char 的指针
    	const int a = 0;
    	int const b = 0; //  上下一样的
    
    	//const直接修饰的变量必须初始化,但是像const int *c这种的不用初始化!!!!
    
    	// const 修饰的指针所指向的内存空间不准变 这个不用初始化
    	
    	const int *c;   // c是一个指向常整形数的指针(所指向的内存数据不能被修改,但是本身可以修改)
    	int * const d = 0; // d 常指针(指针变量不能被修改,但是它所指向内存空间可以被修改)
    	const int * const e = 0; // e一个指向常整形的常指针(指针和它所指向的内存空间,均不能被修改)
    
    	system("pause");
    }
    

      

  • 其中
    const pstring cstr = 0;	//cstr 是指向char 的常量指针 pstring的类型为char * const
  • const int *c;   // c是一个指向常整形数的指针(所指向的内存数据不能被修改,但是本身可以修改)
原文地址:https://www.cnblogs.com/xiaochige/p/6752844.html