const char* str; //This is a pointer to read-only char data
//Read as to (const char)* str;
//Thus :
// *str = 'a';
//Is forbidden
char* const str; //This is a read-only pointer to a char data
//Read as char* (const str);
//Thus :
// str = &a;
//Is forbidden
const char* const str; //This is a read-only pointer to read-only char data
//Read as (const char)* (const str);
//Thus :
// str = &a
// and
// *str = 'a';
//Is forbidden
4条答案
按热度按时间dzhpxtsq1#
它是一个指向
const
数据的const
指针。const
防止*pt_data = 10;
const
可防止pt_data = stuff;
它看起来像是相当合法的。
xa9qqrwz2#
const
总是指向其右边的单词,除非它位于行的末尾,否则它指向项目本身(在高级语言中)在声明这些指针时,应始终初始化它们(除非它们是参数)
const
关键字在确保某些内容不会被修改方面非常出色,同时也告诉开发人员它不应该被修改。例如,int strlen(const char* str)
告诉你字符串中的char
数据无论如何都不会被修改。noj0wjuj3#
它是一个指向常量数据的常量指针。
这意味着你不能改变数据(其地址
pt_data
存储),也不能改变指针(pt_data
)指向其他东西(其他地址)。他可能需要这样。
ovfsdjhp4#
如果从变量名开始,逆时针方向,
pt_data
是指向uint8
的const
指针,也就是const
。请参见以下原始ASCII图像:
自从多年前我在一本旧的C书中看到这个方案以来,它帮助我理解了复杂的声明。