http://www.openedv.com/posts/list/6536.htm
const u8 table_week[2]={0,1,2}; u8 const table_week[2]={0,1,2};
这有什么区别?
在这里是没什么区别的
一般人喜欢写 const u8,但是似乎 u8 const 更符合标准。
但是
u8 const * p;
和
u8 * const p;
就有区别了,
第一个,const 修饰的是 (*p),也就是说,指针指向的内存是常量,不可以被更改。
第二个,const 修饰的是指针变量 p,也就是说,指针本身是一个常量,不能被重写,比如我有另外一个指针 p2,但是就不可以写 p = p2; 但是 u8 * const p; 这样的定义是不能编译通过的,因为 const 变量必须在定义的时候就初始化。不过 C++ 的类成员变量稍有不同,是在构造函数中初始化。
一般人喜欢写 const u8,但是似乎 u8 const 更符合标准。
但是
u8 const * p;
和
u8 * const p;
就有区别了,
第一个,const 修饰的是 (*p),也就是说,指针指向的内存是常量,不可以被更改。
第二个,const 修饰的是指针变量 p,也就是说,指针本身是一个常量,不能被重写,比如我有另外一个指针 p2,但是就不可以写 p = p2; 但是 u8 * const p; 这样的定义是不能编译通过的,因为 const 变量必须在定义的时候就初始化。不过 C++ 的类成员变量稍有不同,是在构造函数中初始化。
=====================
看上面2楼的解释, const u8 * 和u8 const *意思一样 前面和u8 * const不一样,
他不是说
u8 const * p;
和
u8 * const p;
有区别,
第一个,const 修饰的是 (*p),也就是说,指针指向的内存里面存的东西是常量,不可以被更改。
第二个,const 修饰的是指针变量 p,也就是说,指针p本身是一个常量,不能被重写,但该指针指向的内容可以被修改
他不是说
u8 const * p;
和
u8 * const p;
有区别,
第一个,const 修饰的是 (*p),也就是说,指针指向的内存里面存的东西是常量,不可以被更改。
第二个,const 修饰的是指针变量 p,也就是说,指针p本身是一个常量,不能被重写,但该指针指向的内容可以被修改
c语言深度剖析 关于const有解释,
const u8 * 和u8 const *意思一样
前面和u8 * const不一样,都把u8 去了,第一个和第二个一样的 都是const *
第三个是const*,所以第一个就是指针里面存的东西不能够修改,第二个p本身不不能修改,看const 修饰什么,直接把定义的数据类型去掉再看就一目了然了。
第三个是const*,所以第一个就是指针里面存的东西不能够修改,第二个p本身不不能修改,看const 修饰什么,直接把定义的数据类型去掉再看就一目了然了。