指向数组中第一个元素的指针! (C)

我是C.的新手

我知道这有多种forms的问题,但我的有点独特……我想。 我有一个无符号的短指针。

6 unsigned short *pt; 7 pt = myArray[0]; 

数组声明如下: const unsigned short myArray[1024]并且是一个hex数的数组,forms为0x0000,依此类推。

我尝试编译,它抛出这些错误:

 myLib.c:7: error: data definition has no type or storage class myLib.c:7: error: type defaults to 'int' in declaration of 'pt' myLib.c:7: error: conflicting types for 'pt' myLib.c:6: note: previous declaration of 'pt' was here myLib.c:7: error: initialization makes integer from pointer without a cast 

什么出错的想法?

谢谢,菲尔

&是参考运营商。 它返回它前面的变量的内存地址。 指针存储内存地址 。 如果你想“在指针中存储某些东西”,你可以用*运算符取消引用它。 当您这样做时,计算机将查看指针包含的内存地址,这适用于存储您的值。

 char *pc; // pointer to a type char, in this context * means pointer declaration char letter = 'a'; // a variable and its value pc = &letter; // get address of letter // you MUST be sure your pointer "pc" is valid *pc = 'B'; // change the value at address contained in "pc" printf("%c\n", letter); // surprise, "letter" is no longer 'a' but 'B' 

当你使用myArray[0]你没有得到一个地址而是一个值,这就是人们使用&myArray[0]

我的猜测(你只显示两行)是这个代码出现在一个函数之外。 这是一个声明:

 pt = myArray[0]; 

声明必须在function上。 另外,如果myArray类型为unsigned short[] ,那么你想要做其中一个:

 pt = myArray; pt = &myArray[0]; // same thing 

是的,你真的应该包含更多的代码,以便我们可以看到上下文。

我没有收到错误消息,但您的代码不正确。

尝试:

 pt = &myArray[0]; 

要么:

 pt = myArray + 0; 

要不就:

 pt = myArray; 

代替。

你不应该扔掉const限定符; 所以指针应该有一个const修饰符。

 const unsigned short myArray[1024]; const unsigned short * pointer = myArray; // set pointer to first element