Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何正确使用数组下标符号?_C_Arrays_Pointers - Fatal编程技术网

C 如何正确使用数组下标符号?

C 如何正确使用数组下标符号?,c,arrays,pointers,C,Arrays,Pointers,我正在努力正确阅读以下内容: *(strarray[i]+j)=0; 我当时的理解是: strarray[i][++j] = 0; 或 但并不完全相同。如何将其正确写入数组下标符号?使用后缀数组下标符号 *(strarray[i]+j)=0; 将是 strarray[i][j]=0; 引用C11标准,第§6.5.2.1章,数组订阅 后缀表达式后跟方括号中的表达式是下标表达式 指定数组对象的元素。下标运算符的定义[] 是不是E1[E2]与(*((E1)+(E2)))相同。[……] 在您的

我正在努力正确阅读以下内容:

*(strarray[i]+j)=0;
我当时的理解是:

strarray[i][++j] = 0;


但并不完全相同。如何将其正确写入数组下标符号?

使用后缀数组下标符号

*(strarray[i]+j)=0;
将是

 strarray[i][j]=0;
引用
C11
标准,第§6.5.2.1章,数组订阅

后缀表达式后跟方括号中的表达式是下标表达式 指定数组对象的元素。下标运算符的定义
[]
是不是
E1[E2]
(*((E1)+(E2)))
相同。[……]


在您的情况下,您可以考虑<代码> E1 <代码> > <代码> > >代码> >代码> E2 < /代码>为<代码> j>代码>

您为什么更改<代码> +J < /代码>到<代码> ++J < /代码>?<代码> ++J < /代码>和<代码> +j>代码>没有任何关系。代码>++j改变了
j
本身,而
+j
只是将j的值添加到代码前面的值中。strarray的类型是什么?是char**?是的,尼基塔,是char**。下面发布的答案解决了我的困惑。谢谢苏拉夫,它起作用了,那个小小的+让人不安。我将检查更多关于数组订阅的信息。很好地参考了C11.Nice。这里的一般规则是:当我们说a[i]时,我们总是指*(a+i)。
 strarray[i][j]=0;