首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在指针后面插入[]括号内的索引是什么意思?

在指针后面插入[]括号内的索引是什么意思?
EN

Stack Overflow用户
提问于 2019-08-01 20:29:09
回答 2查看 227关注 0票数 0

我正在学习一些C代码,只是为了理解,我找到了一个指针,在[]之间有一个索引,就好像它是一个数组(作为“pointeri ");我不明白它是什么意思,或者它是如何工作的。

这是我找到它的代码的一部分:

代码语言:javascript
复制
struct turing_machine_t{
    struct linked_list_t*** transitions;
    bool* acceptors;
    unsigned int max_steps;
    unsigned int num_states;
};

void delete_turing_machine(struct turing_machine_t* tm){ 
    int i,j;
    for(i = 0; i < tm->num_states; i++){
        if(tm->transitions[i] != NULL){
            for(j = 0; j < ALPHABET_SIZE; j++){
                struct linked_list_t* tl = tm->transitions[i][j];

                //after here there are just some free

它来自图灵机模拟器,但这并不重要;如果我是对的,转换是一个三重指针,但过渡和过渡是什么意思呢?如果它不是数组,那么这些索引的意义是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-01 20:44:39

dr数组的行为类似于指针,您可以对指针使用数组符号。

transition是一个三重指针。这意味着

代码语言:javascript
复制
a pointer to
a pointer to
a pointer to
a `struct linked_list_t`

它也可以解释为3D数组,因为这实际上是数组在幕后的工作方式。The following two syntaxes are functionally identical

代码语言:javascript
复制
int a = array[index];
int a = *(array + index);

数组略有不同,因为如果它们是在范围内创建的,那么您使用的任何IDE或静态分析工具通常都会跟踪它们的范围,但编译器对它们的处理方式是相同的。这是因为,当您对这样的指针执行算术时,编译器基本上会将index乘以sizeof(*array) (与sizeof(array[0])相同)。

也就是说,array + 1是在为array分配任何内容之后立即指向内存地址的指针。在此之后,array + 2是一个指向内存地址的指针,假设它与array大小相同。array + 3是该地址之后的内存地址,等等。

因此,括号操作基本上是指针算法的语法糖。transitions[i][j]的表达式可以看作是:

  1. transitions是一个具有指针大小的元素的数组。
  2. i获取transitions第四个指针大小的元素(即*(transitions + i))的值。
  3. 我们刚刚得到的值(让我们称之为pointer_val)本身就是指向指针大小元素数组的指针。
  4. j获取pointer_val第四个指针大小的元素的值(即,*(pointer_val + j),或者,longhand,*(*(transitions + i) + j))
  5. 我们刚刚得到的值是一个指向linked_list_t的指针,我们将其赋值给变量tl

注意,在transitions的定义中有三个星号。我们在这里计算所有这些-前两个在数组索引中,第三个在我们分配的linked_list_t*中。

票数 0
EN

Stack Overflow用户

发布于 2019-08-01 20:42:40

如果指针ptr指向一个连续的对象组,那么ptr[i]将引用该组的i+1th元素,就像如果ptr是一个数组一样。tm->transitionstm->transitions[i]可能就是这种情况。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57316573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档