`
fireDragonpzy
  • 浏览: 467571 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

const char*, char const*, char*const的区别

c++ 
阅读更多
const char*, char const*, char*const的区别问题几乎是C++面试中每次都会有的题目。 这个知识易混点之前是看过了,今天做Linux上写GTK程序时又出现个Warning,发散一下又想到这个问题,于是翻起来重嚼一下。

事实上这个概念谁都有只是三种声明方式非常相似:

Bjarne在他的The C++ Programming Language里面给出过一个助记的方法: 
把一个声明从右向左读。 
char * const cp; ( * 读成 pointer to ) cp is a const pointer to char 
const char * p; p is a pointer to const char; 
char const * p; 同上因为C++里面没有const*的运算符,所以const只能属于前面的类型。 

C++标准规定,const关键字放在类型或变量名之前等价的。
const int n=5; //same as below
int const m=10

结论:
char * const cp     : 定义一个指向字符的指针常数,即const指针
const char* p       : 定义一个指向字符常数的指针
char const* p       : 等同于const char* p

摘自:http://www.cnblogs.com/Flouse/archive/2008/08/14/constPointer.html
分享到:
评论

相关推荐

    const char*转LPCWSTR 字符串转换

    其中,`const char*`代表C风格的ASCII字符串,而`LPCWSTR`则是宽字符(Unicode)字符串类型,它在Windows API中广泛使用。本篇文章将深入探讨如何在Windows环境下将`const char*`转换为`LPCWSTR`。 首先,理解两者...

    std::string、char*、const char*转托管byte数组或托管字符串String

    std::string、char*、const char*转托管byte数组或托管字符串String std::string、char*、const char*是C++中三个不同的字符串表示方式,它们都可以转换为托管的byte数组或字符串String,但是在C++/CLI中,它们的...

    golang调用c++DLL传递char*型参数读取返回char*字符串内容

    golang调用c++DLL返回值为char*参数为const char*,读取返回DLL返回值,传递char*型参数

    VC++ string_format(const char* format, ...)

    能够按照格式化输出字符串数据,长度不受限制,亲测十几兆都正常。 #include using namespace std;

    (const) char 转CString 详解(字符串类型转换详解,不断补充)

    ### (const) char 转 CString 详解:深入解析字符串类型转换 在计算机编程领域,尤其是在C++中,字符串处理是极为常见的需求之一。对于熟悉Microsoft Foundation Classes (MFC)框架的开发者而言,`CString`类是进行...

    string和char*

    string 的构造函数可以接受多种类型的参数,如 const char*、const string& 等。 string 的优点是可以自动管理内存,避免了手动释放内存的风险。string 还提供了许多实用的成员函数,如 operator+=、operator+、...

    VLC3.0.16 sdk添加录像接口(win32)

    1、LIBVLC_API int libvlc_media_player_record_start( libvlc_media_player_t *p_mi, const char *psz_filepath, const char *psz_filename ); LIBVLC_API int libvlc_media_player_record_stop( libvlc_media_...

    string、cstring 、char* 转化问题

    需要注意的是,在使用 char* 和 string 之间的转换时,需要将 char* 定义为 const char*,这样是最安全的。 熟练掌握 string、CString 和 char* 之间的转换是非常必要的。本文提供了六种不同的转化方法,希望能够...

    strcpy原型

    char* strcpy(char* strDest, const char* strSrc); ``` - **函数返回值**: 返回类型为 `char*`,表示该函数返回的是一个指向字符的指针。 - **第一个参数** `strDest`: 类型为 `char*` 的指针变量,用于指向目标...

    C++类型转换(char* string cstring unicode ansi )转换

    这段代码将 const char* 类型的指针 p 转换成 char* 类型的指针 p1。 char* 转 const char*: char *p = "123"; const char *p1 = p; 这段代码将 char* 类型的指针 p 转换成 const char* 类型的指针 p1。 在实际...

    cstring string char*的对比,使用,相互转换的介绍

    - 使用 `CString` 的 `GetString()` 方法获取 `const char*`,然后用 `std::string` 构造函数或 `assign()` 成员函数进行转换。 - **`string` 到 `CString`**: - 使用 `CString` 的构造函数从 `const char*` 创建 ...

    字符串及其操作以及函数实现

    char *my_strcpy(char *dest, const char *src) { char *tmp = dest; while (*dest++ = *src++) ; return tmp; } ``` 此函数实现了字符串复制功能,将源字符串 `src` 复制到目标字符串 `dest` 中。注意,在循环...

    CString,string,char*之间的转换

    string的c_str()也是非常常用的,但要注意和char *转换时,要把char定义成为const char*,这样是最安全的。 以上函数UNICODE编码也没问题:unicode下照用,加个_T()宏就行了,像这样子_T("%s") 补充: CString ...

    rsa算法设计 密码学

    //extern "C" __declspec(dllexport) int RsaAEncrypt(CString& source,const char* key,const char* R,CStringArray& result);//加密 //extern "C" __declspec(dllexport) CString RsaADecrypt(CStringArray& ...

    C++中string转换为char*类型返回后乱码问题解决

    "C++中string转换为char*类型返回后乱码问题解决" 在C++中,string类型和char*类型之间的转换是非常常见的操作。然而,在将string类型转换为char*类型返回时,经常会出现乱码问题。本文将详细介绍这个问题的解决...

    CString string char * int double float 之间转化大全

    CString 可以自动转换为 const char*,而 string 不可以。此外,CString 和 string 的比较结果是值的比较,而 char* 的比较结果是地址的比较。 二、CString、string、char* 之间的转化 CString、string 和 char* ...

    Linux中使用exec函数族详解及示例代码 | 嵌入式Linux应用开发篇 – 03

    1.exec函数族 exec 为 execute(执行),exec 函数族用来替换调用进程所执行的程序,该进程的用户空间代码和数据完全被新程序替换,从新程序的...int execle(const char *path, const char *arg,..., char * const en

    深入const int *p与int * const p的区别详解(常量指针与指向常量的指针)

    对于指针和常量,有以下三种形式都是正确的: 代码如下:const char * myPtr = &char_A;//指向常量的指针char * const myPtr = &char_A;//常量的指针const char * const myPtr = &char_A;//指向常量的常量指针下面...

    华为嵌入式面试题嵌入式开发PDF

    constchar*p上述三个有什么区 别? 答案: char * const p; // 常量指针,p的值不可以修改 char const* p; //指向常量的指针,指向的常量值不可以改const char *p; //和 char const *p (3) char strl[] = "abc"; char ...

    string与char*转换的使用详解

    代码如下://string –> const char  string str2ch; str2ch.c_str();   //=============================  //string –> char * //先转为 const char , 然后 转char *  char TargetFile[strlen...

Global site tag (gtag.js) - Google Analytics