编程

当前位置:时时彩平台 > 编程 > const char *p、char const *p、char * const p的区别?

const char *p、char const *p、char * const p的区别?

来源:http://www.mrmtshipyard.com 作者:时时彩平台 时间:2019-09-27 14:40

const char *p和char const *p是一样的,都表示定义一个指向字符常量的指针,指针的内容不可变.char * const p表示一个指向字符的指针常量,字符可以改变,但是指针指向的地址不可变.

[定义理解]

char* const p; p为指向字符变量的指针,地址不变,地址内容可变

const char *p; p为指向字符变量的指针,地址可变,地址内容不变

char const *p 与const char *p等价。

[记忆方法]

const * p (不管char的位置,中文翻译就是常量的指针, 从左往右读,地址可变,地址内容不变)

  • const p (一样从左往右读,指针常量,地址不变,地址内容可变)

const char *十大正规时时彩平台注册, const p (指针不能变,指的量也不能变)
[正确示例]

#include "stdio.h"  
int main(int argc, char const *argv[])  
{  

    char str[]="abcd";  
    char const *p;  
    p=str;  
    p++;  
    char* const q=&str[1];  
    *q='m';  
    printf("%c,%cn",*(p+1),*q );  
    return 0;  
}  

[运行结果]

 lifeihu@ubuntu:~/src/demo13$ cc test.c -o test  
 lifeihu@ubuntu:~/src/demo13$ ./test   
 c,m  

常量指针p的地址可变(p++),若改变p指向地址内容的值会出现如下错误:

char const *p;  
p=str;  
*p='n'; 

 lifeihu@ubuntu:~/src/demo13$ cc test.c -o test  
test.c: 在函数‘main’中:  
test.c:8:2: 错误: 向只读位置‘*p’赋值  

指针常量q的内容可变(*q='m'),若改变q的指向地址会出现如下错误:

char* const q=&str[1];  
q++;  



lifeihu@ubuntu:~/src/demo13$ cc test.c -o test  
test.c: 在函数‘main’中:  
test.c:11:2: 错误: 令只读变量‘q’自增  

【注意】对于指针常量char* const q,在定义时必须初始化。否则会出现如下错误:

char* const q;  
q=&str[1];  



lifeihu@ubuntu:~/src/demo13$ cc test.c -o test  
test.c: 在函数‘main’中:  
test.c:10:2: 错误: 向只读变量‘q’赋值

本文由时时彩平台发布于编程,转载请注明出处:const char *p、char const *p、char * const p的区别?

关键词:

上一篇:没有了

下一篇:没有了