如何编辑指针数组的索引?

4

好的,我很想知道您如何使用指针数组来访问索引中的值。例如:

printf("%c", (*character)[0]);

我知道这段代码有问题,但我不知道该如何修复它。假设我想访问指针数组的0位置,然后像上面一样打印它,我该怎么做?


3
“Character”的定义是指一个人的性格、品质或特征,也可以指表示文字或符号。 - Crowman
使用指针数组来访问索引中的值 - 我不理解这个。 - user529758
这只是一个我可以创建用于存储字符的数组的一般描述。例如 char character[4] = {a, b, c, d}。如果该数组是一个指针,我该如何访问第0个索引,并在需要时进行更改呢? - Brandon Braun
3个回答

3
假设字符是 char character[] = {'1'};
character[someIndex] means someIndex[character] means  *(character+someIndex) 

如果这是你想知道的,那么你应该做类似以下的操作: ```html

如果这是你想要知道的。那么你应该这样做:

```
printf("%c", *(character+0));

这相当于

printf("%c", *character);

printf("%c", character[0]);

刚刚错过了 - 关于这个声明

指针数组的索引?

请注意数组不是指针,如果您被这个搞糊涂了。


@Smac89:只是为了让楼主明白。 - Sadique
@Acme但这样会误导,因为假设数组指针指向第k个元素,执行*(character+0)将不会打印第一个元素。 - smac89
@Smac89 :: 为什么k不能等于0?character是数组的基地址 - 假设它是一个指针,那么它应该指向相同的地址,否则做这样的事情就没有意义。 - Sadique
@Acme请看这个 - smac89
@Smac89 :: 你正在争论一些无意义的事情 - 请看看这里所说的“指针和数组的等价性”是什么意思 http://www.lysator.liu.se/c/c-faq/c-2.html - Sadique
显示剩余4条评论

1
从您的问题中我观察到您已经声明了一个字符指针,类似如下:

char *character="something";

现在您想通过索引访问其内容。
所以不用担心,无论您是否声明为指针数组或数组,您都可以通过以下任何一种方式访问它的内容:-

printf("%c",character[1]);//通用方法

或通过指针表示法
printf("%c",*(character+1));

或者
printf("%c",*(1+character));//交换律

更令人惊讶的是,您也可以使用以下方法
printf("%c",1[character]);

1

char *arr[20]={"Stackoverflow"};

这意味着您有一个char类型指针数组,其中20个内存位置的地址存储在一个大小为20的数组中。 arr [0]中的第一个内存位置指向字符串“Stackoverflow”,其余位置未分配(因此您将获得垃圾值或可能是分段错误)。 现在,如果您想访问第0个内存位置,请执行以下操作:

printf(“%s \ n”,arr [0]);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接