簡體   English   中英

如何訪問C中數組內部的指針的索引?

[英]How do I access an index of a pointer inside of an array in C?

如果我有以下代碼:

char test[3] = {11,22,33};
char *ptr, *ptr2;
char *array[2] = {ptr,ptr2};

如何通過數組訪問數字22?

我已經嘗試了以下方法,但均未成功:

array[0][1]

但是,如果我通過write()函數訪問指針變量,例如:

write(file, array[0], 3)

它將112112寫入文件沒有問題。 我只想訪問1索引。

  char *ptr, *ptr2; char *array[2] = {ptr,ptr2}; 

您錯過了初始化ptrptr2的機會

還要注意ptrptr2不是常量初始值設定項元素

char test[3] = {11,22,33};
char *ptr = test, *ptr2 = NULL; /* ptr2 initialized even though not important for array[0][1] */
char *array[2];

array[0] = ptr;
array[1] = ptr2;

並且array[0][1]將為22


我鼓勵您使用產生警告/錯誤的選項進行編譯,當然要考慮到它們,最終編譯器不會指示警告/錯誤。

如果我使用選項編譯您的代碼,則會得到:

pi@raspberrypi:~ $ cat a.c
int main()
{
  char test[3] = {11,22,33};
  char *ptr, *ptr2;
  char *array[2] = {ptr,ptr2};

  return array[0][1];
}
pi@raspberrypi:~ $ gcc -pedantic -Wextra a.c
a.c: In function ‘main’:
a.c:5:9: warning: ‘ptr’ is used uninitialized in this function [-Wuninitialized]
   char *array[2] = {ptr,ptr2};
         ^~~~~
a.c:5:9: warning: ‘ptr2’ is used uninitialized in this function [-Wuninitialized]

但是:

pi@raspberrypi:~ $ cat aa.c
#include <stdio.h>

int main()
{
  char test[3] = {11,22,33};
  char *ptr = test, *ptr2 = NULL; /* ptr2 initialized even not important for array[0][1] */
  char *array[2];

  array[0] = ptr;
  array[1] = ptr2;

  printf("%u\n", (unsigned char) array[0][1]);
}
pi@raspberrypi:~ $ gcc -pedantic -Wextra aa.c
pi@raspberrypi:~ $ ./a.out
22
pi@raspberrypi:~ $ 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM