点作为数组索引

时间:2019-03-26 21:02:16

标签: c pointers

我的背景是C#,我有以下代码(用C语言编写),我需要告诉输出什么:

GetSafeHWnd

有人可以解释一下第4行吗?

我无法理解OnHyperlinkClick是指#include <stdio.h> #define N 10 int main() { int a[N] = { 3,4 }; //<-- [3][4][0][0][0][0][0][0][0][0] int *q = a; //<-- some address char s[N] = "abcdefg"; int k = s[*a] - s[a[*q]]; //<-- what is that mean ? char *p = s; a[k] = k; printf("%d %s\n",k,p+a[k]); printf("%d %d %d %d %d",q[0],q[1],q[2],q[3],q[4]); return 0; } 处的索引s[*a]吗?但s不是地址,不是整数。关于*a

的相同问题

2 个答案:

答案 0 :(得分:1)

考虑

int k = s[*a] - s[a[*q]];

第一个*a获得a[0]处的值3

我们知道q == a,所以*q*a相同,后者又是值3a[3]的值为0

因此,现在我们有s[3] - s[0],即'd' - 'a',即3(假定为ASCII编码),是为k打印的值。

答案 1 :(得分:0)

在没有其余代码的情况下,尚不清楚它是否将完全起作用。例如N是什么?

具体地说,s[*a]a是数组的名称。 *aa[0]相同,因为a是指向第一个元素的指针。因此*a3,而s[*a]s[3],它是字符'd'