标题:关于一个指针声明的问题
只看楼主
点灯工程师
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2020-9-26
结帖率:100%
已结贴  问题点数:10 回复次数:7 
关于一个指针声明的问题
问题如下:
程序代码:
char * const *(*next)();
//书中的解释为:“next是一个指向函数的指针,该函数返回另一个指针,该指针指向一个类型为char的常量指针”

//前半句话能理解,至于该函数是返回一个char类型的常量指针,那么不应该写成:
char const *(*next)();
//为什么char后面还要有一个*号?
搜索更多相关主题的帖子: 函数 声明 next char 指针 
2020-10-11 16:57
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:1 
类似:
char* p1;
int* p2;

2020-10-11 17:08
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
你是不明白 函数指针,还是不明白 char * const * 与 char const * 的区别?
2020-10-11 17:14
点灯工程师
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2020-9-26
得分:0 
回复 3楼 rjsp
我是不懂char * const * 和 char const *的区别,另外 char * const和 char const * 是一样的吗?
2020-10-11 18:47
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
得分:2 
char* 和const char*的区别:
一、含bai义的du区别
 char* 表示一个zhi指针变量,并且这个变dao量是可以被改变的。
 const char*表示一个限定不会被改变的指针变量。
二、模式的区别
 char*是常量指针,地址不可以改变,但是指针的值可变。
 const char*是指向常量的常量指针,地址与值均不可变。
三、指针指向的内容的区别
 char*指针指向的内容是可以改变的,是不固定的。赋值后在数据传递的过程中允许改变。
 const char*指针指向的内容是固定的,不可改变的。对传入的参数,不会对指针指向的内容进行修改.
四、意义的区别
 char* str确保str这个指针不会改变,但是这个指针里面的内容可以改变。
 const char* str确保*str的内容不会改变,也就是用str这个指针无法改变str这个指针指向的地址的内容,但是可以改变这个指针。
收到的鲜花
  • jungle75162020-10-12 11:28 送鲜花  1朵  
2020-10-11 19:24
纯蓝之刃
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:76
帖 子:554
专家分:3690
注 册:2019-7-29
得分:3 
https://blog.

一沙一世界,一花一天堂。无限掌中置,刹那成永恒。
2020-10-11 19:41
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:4 
以下是引用点灯工程师在2020-10-11 18:47:27的发言:

我是不懂char * const * 和 char const *的区别,另外 char * const和 char const * 是一样的吗?

char * const * 和 char const * 的区别很明显,即使不看 const,那前者是 char**,后者是 char*
char * const * p 说的是 *p 不可被更改,p本身 及 **p 是可以被更改的;
char const * p 说的是 *p 不可被更改,p本身 是可以被更改的;

const 在C语言中表示“只读”(顺便说一下,C++中不是这样)
char const * p; 看const后面是什么?是 *p,那就表示 *p 是只读不可修改的;
const char * p; 看const后面是什么?是 *p,那就表示 *p 是只读不可修改的;所以 char const * p 和 char const * p 是等价的,没区别。
char * const p; 看const后面是什么?是 p,那就表示 p 是只读不可修改的;所以 char * const 和 char const * 是不一样的。
char const * const p; 看const后面是什么?前一个后面是 *p,后一个后面是 p,那就表示 *p 和 p 都是只读不可修改的;

收到的鲜花
  • jungle75162020-10-12 11:29 送鲜花  1朵  
2020-10-12 09:07
点灯工程师
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2020-9-26
得分:0 
感谢各位的解答,我理解了
2020-10-12 11:01



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-503426-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.393085 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved