C语言一个关于指针的函数,类似于int* const* a的变量该咋理解

sardata* const* src_list,就是一个二级指针,第一级指向了一个const的一级指针sardata*,按照内容来看,src_list是一个数组。也就是说,src_list这个数组的内容都是只读的,放着一个一个的sardata对象的指针。
【C语言一个关于指针的函数,类似于int* const* a的变量该咋理解】 所以实际上你看成sardata* const src_list要更好

■网友
int* const* a;从右向左读a是一个指针指向一个const 指针这个const指针指向一个int类型的数据对象含义是*a 不可以被显式改变(如赋值,++等等)不理解那个const不影响你理解代码的功能那个const是为了帮助程序员预防错误的你把它当作int * * a;理解就可以了函数里面的第一个变量src_listsardata*const* src_list你可以理解为 sardata ** 类型就可以这里写const的原因可能有两种1 传人的指针指向的是sardata*const2 希望函数不至于误改* src_list
■网友
首先你要知道操作符的优先级和结合方向。 *是右结合的,且优先级非常高。具体解释如下*a-----》a里面的内容是一个地址,也就是指针。它指向的是什么呢? const (*a)---------》a指向一个常量。 --------》要把const看成一种类型。*a就是指向这种类型的意思。其实int *a就是表示a里面是一个地址,int是用来修饰a指向的类型---------也就是*a才是int类型的,a仅仅是指针。const前面再加个*就表示,const这个无名变量里面也是一个地址。如果你吧*a用int 类型的b来代替,就容易看懂了。*a其实就是一个无名变量罢了。你要画图,一个框框表示a变量,然后它指向一个变量,但是这个变量没有名字、同时被const修饰,而这个无名变量又指向了一个int类型的无名变量。你可以自己添加b和c作为名字让自己理解,两步以上的指针的确让人觉得麻烦。我要特别强调的是,指针跟类型无关,它里面总是一个地址。所谓的int *a,只是表示a只能指向int类型的罢了----------它里面只是地址。你可以认为指针就是钥匙,所有钥匙都是一种类型的,但是钥匙去打开的东西是不同类型的,也就有了不同类型的指针了。比如我有两把钥匙,一把可以打开箱子,一把可以打开卧室门-------虽然同样是钥匙,但是我称a为箱子类型的钥匙,b为房间类型的钥匙。指针类型说的是指向的类型而不是它本身。这个语句的意思就是a是一个指向内容不能变动的指针。也就是a指的无名变量只能指向一个地方,但是a可以不指向这个无名变量---------const修饰这个指针,对a没有作用。你想要真正弄明白,你就要看看C和指针和C专家编程了。这个里面刚好有,还有int **const a和int const **a呢。这个你知道const修饰什么,就好理解了。这里一个是a是个常量指针;后面一个是最后所指的int变量是个常量。其实修饰符也确实是一种类型。如果你会java就会明白。加了const就等于是另一种变量了。所谓的int类型也只不过是修饰长度的类型罢了,const就是修饰它能否被改动。
■网友
按照楼上说的,看\u0026lt;\u0026lt;C专家编程\u0026gt;\u0026gt;"函数指针和指针函数"
■网友
应该理解为const int
■网友
请讲星号*读作“pointer to”就一切好办了,好记得很。「摘自C++ primer我也忘了哪个地方」另……咱能不贴这么长的代码么,手机端看着真心吓人
■网友
const 是给第一个星号的,所以,a 是一个指针,指向一个 const 指针,这个指针指向一个 int。.int * const * a;.* const * a 是一个 int.* a 是一个 * const 指向 int.a 是一个 * 指向一个 * const 指向 int

■网友
理解成const int** a即可----------------------------------------------经菊苣@vczh提醒,答案有错,请参看评论


    推荐阅读