我有一个指向数组的指针,但无法访问该数组的成员。为了使它更精确,请参见下面的代码:

       int struc[2] = {6,7};
       int (*Myval)[2];
       Myval =&struc;
         Now the Myval is pointing to the start of the array and upon dereferencing the pointer we would get the 1st element of the array i.e


      printf("The content of the 1st element is %d\n",(*Myval[0])); 
      gives me the first elemnt which is 6.            
      How would i access the 2nd elemnt of the array using the same pointer.

如果我做Myval ++,由于数组的大小是8,它将增加8。有什么建议或想法吗?

谢谢,问候玛蒂

===============>>#1 票数:4

我认为,尽管int (*)[2]是指向两个int的数组的有效类型,但对于您所需的内容而言,它可能是多余的,它是用于访问数组成员的指针类型。 在这种情况下,只需要一个简单的int *指向数组中的整数即可。

int *p = struc; // array decays to pointer to first element in assignment

p[0]; // accesses first member of the array
p[1]; // accesses second member of the array

正如其他人指出的那样,如果您确实使用了指向数组的指针,则必须在对结果数组使用下标操作之前先取消引用该指针。

int (*Myval)[2] = &struc;

(*Myval)[0]; // accesses first member of the array
(*Myval)[1]; // accesses second member of the array

“声明镜像使用”的C声明语法在这里有帮助。

===============>>#2 票数:2

您不会取消引用,而是下标,就像其他指针一样

Myval[0][1] // accesses second element

第一个[0]可能有点令人困惑,因为它表明您正在处理数组。 为了清楚表明您正在使用指针,我将使用解引用

(*Myval)[1] // accesses second element

(*Myval)取消引用数组指针并产生该数组,以下下标操作将寻址并取消引用所需的项。

===============>>#3 票数:0

这也应该工作:

*( Myval[0] + 1 )

  ask by translate from so

未解决问题?本站智能推荐:

10回复

指向数组的指针

我想知道,你能指出一个数组中的一组变量吗? 像这样 所以你可以说...... 和 和*指针的长度 好 让我解释一下我想要完成的事情,也许这会让我有所了解。 我想将一个完整的文件读入一个缓冲区,但我想要一块一块地完成。 将一个小数组传递给read()然后
1回复

指向数组的指针

我找到了一个指向数组的指针的例子,这对我来说没有多大意义,我想知道是否有人可以帮助我? 我不确定第三行p [3] = 1的工作方式以及如何导致a [3] =6。感谢您的提前帮助。
3回复

指向指针和指针数组的指针

gcc 4.4.4 c89 我理解指针好了。 但是,我正在加紧指针数组和指针指针。 我一直在搞乱这个代码片段,并留下了我认为我理解的内容的评论。 非常感谢任何建议,如果我的评论与代码行一致吗?
2回复

指向整数的指针数组

我正在尝试对整数指针数组进行排序(而不是整数数组本身) 但是,当我尝试初始化指向整数数组中整数地址的指针数组时,我的程序崩溃了。 我的程序在res[i] = &(arr[i]);崩溃res[i] = &(arr[i]);
3回复

Memsetting指向数组的指针

我有一个指向数组的指针。 我知道该数组可以容纳多少个项目,但是每个项目的长度是动态的。 那么在这种情况下,如何memset()数组。 我也想为每个项目分配内存。 这个怎么做?
3回复

指向数组中值的指针?

所以我需要在const char数组中有一个指向值的指针。 但是我不能完全没有错误地运行它。 这是代码。 编辑-很抱歉没有提及错误。 问题是,根据放置不同的星号和“&”号的位置,我会遇到很多不同的错误。 没有一个特定的错误。 我得到的最常见的一个说:“从'const char'
1回复

反转指向数组的指针

我有一个指向数组的简单指针,我想反转该数组,这是我写的代码: 如您所见,我使用此功能: 我要获取数组的长度,这是我的小主 这是输出: 现在,我尝试仅打印值,因此在str_reverse的while循环中,我注释了这两行: 这是输出: 那很好! 但
2回复

指向数组的C指针

我有一个大小为240x320字节的数组,指向该缓冲区的指针存储在内存地址0xE30014中。 我试图定义如下: 因为我希望能够以这种方式对数组建立索引: 但是,这引发了一个错误,即数组不是合法的左值。 我想知道当前定义有什么问题吗? 任何帮助深表感谢。
3回复

指向数组的sizeof指针

我已经编写了程序来检查指针表达式的大小。 我完全被指针弄糊涂了。 说明编译器如何计算指针表达式的大小。 产量
3回复

指向数组的指针的地址

下面是二维数组的示例。 如果我写p = &s[0]; 没有错误。 但如果我写p = s[0]; 有一个错误,即使&s[0]和s[0]将给出相同的地址。 请告诉我为什么会有不同之处,即使两者都给出相同的地址。