由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - c++ 弱问题:static const char* const 这两个const 分别是什么意思?
相关主题
What're the three types of memory allocated for C++ variables?大侠进来看看这个问题
请问如何把初始化一个const 的vector (or array) in a class?c++ 一问
请教一个const pointer的问题C++ Q05: pointer to constant variable
C++ 全局变量是怎么回事?in-class static member question
a simple C++ questionwhy int** cannot convert to const int** ?
最新某公司onsite面试题 (转载)A question about c++ pointer
C++ cast 小结请问const myClass &src 和myClass const &src有什么区别?
c++ 语法问一道brainbench上的问题
相关话题的讨论汇总
话题: const话题: char话题: static话题: pointer话题: 分别
进入Programming版参与讨论
1 (共1页)
m****s
发帖数: 1481
1
static const char* const grades[]={"A","B","C","D","Fail"};
比较糊涂,这里两个const分别定义什么东西是constant呢?谢谢
m*m
发帖数: 47
2
grades 是个const pointer 所指向的是个const char*. 从右往左读就好理解了。
n*****t
发帖数: 22014
3
写法比较怪,一般俩 const 连一块

【在 m*m 的大作中提到】
: grades 是个const pointer 所指向的是个const char*. 从右往左读就好理解了。
m****s
发帖数: 1481
4
明白了,谢谢

【在 m*m 的大作中提到】
: grades 是个const pointer 所指向的是个const char*. 从右往左读就好理解了。
b*******s
发帖数: 5216
5
一般是从右往左读,一读就明白了

【在 m****s 的大作中提到】
: static const char* const grades[]={"A","B","C","D","Fail"};
: 比较糊涂,这里两个const分别定义什么东西是constant呢?谢谢

m****s
发帖数: 1481
6
顺便再问下,按照从右往左读,这里这个static是指const char* 是静态的?也就是那
些字符串只初始化一次就不再变了。但是如果这一句是在一个function里,每次call这
个function,letters array里面存的地址还是重新从那些字符串那里初始化一次?

【在 b*******s 的大作中提到】
: 一般是从右往左读,一读就明白了
n*****t
发帖数: 22014
7
C 是把这些全放在 data segment 里的。array 存指针,编译的时候就初始化了,运行
时候不会再动了。static const 你就理解成 define 常量好了。
C++ 应该差不多吧?俺不懂胡说的

【在 m****s 的大作中提到】
: 顺便再问下,按照从右往左读,这里这个static是指const char* 是静态的?也就是那
: 些字符串只初始化一次就不再变了。但是如果这一句是在一个function里,每次call这
: 个function,letters array里面存的地址还是重新从那些字符串那里初始化一次?

d****n
发帖数: 1241
8
static和const是不同的。
static是一个storage specifier, 表示两层含义,(1)linkage, (2) storage
duration. 例如有类似下面的定义:
/* global scope */
static int g; /* g的visibility是file-scope */
那么表示变量g的linkage是internal的,在你所定义的文件外是不可见的;其次g具有
static duration storage, 意思是说,g只能在程序开始的时候,初始化一次,同时,
g这个对象在程序运行的过程中都是存在的.
你也可以在一个函数里定义一个static的变量,在这种情况下,这个static变量是
function-scope的。
const是type qualifier, 表示只读性。比如
const int g;
那么g所代表的对象是只读的,对g进行任何形式的写操作(比如直接写或者通过指针)
是undefined behavior.

【在 m****s 的大作中提到】
: 顺便再问下,按照从右往左读,这里这个static是指const char* 是静态的?也就是那
: 些字符串只初始化一次就不再变了。但是如果这一句是在一个function里,每次call这
: 个function,letters array里面存的地址还是重新从那些字符串那里初始化一次?

d****n
发帖数: 1241
9
准确的说编译器会把没有初始化的static变量放到bss里,有初始值的,放到data
segment里

【在 n*****t 的大作中提到】
: C 是把这些全放在 data segment 里的。array 存指针,编译的时候就初始化了,运行
: 时候不会再动了。static const 你就理解成 define 常量好了。
: C++ 应该差不多吧?俺不懂胡说的

f*******n
发帖数: 12623
10
一个const是关于pointer指向的那些char。另一个是关于pointer变量本身。
const char *
char const *
这两个是一样的。就是说pointer本身可以变,但是不能通过pointer来改指向的char。
char * const
这是说pointer本身不能变,但是可以通过pointer来改指向的char。
const char * const
char const * const
这两个是一样的。就是说pointer本身不能变,也不能通过pointer来改指向的char。

【在 m****s 的大作中提到】
: static const char* const grades[]={"A","B","C","D","Fail"};
: 比较糊涂,这里两个const分别定义什么东西是constant呢?谢谢

1 (共1页)
进入Programming版参与讨论
相关主题
问一道brainbench上的问题a simple C++ question
谁给解释一下这个c question最新某公司onsite面试题 (转载)
数组指针的问题C++ cast 小结
问个c++在不同函数里分配内存和释放内存的弱问题c++ 语法
What're the three types of memory allocated for C++ variables?大侠进来看看这个问题
请问如何把初始化一个const 的vector (or array) in a class?c++ 一问
请教一个const pointer的问题C++ Q05: pointer to constant variable
C++ 全局变量是怎么回事?in-class static member question
相关话题的讨论汇总
话题: const话题: char话题: static话题: pointer话题: 分别