指针符号与数组符号

时间:2014-07-13 17:09:10

标签: c arrays pointers

我喜欢C中的指针符号而不是数组符号,但在某些情况下无法弄明白。我有以下代码,以及main

的正文
/*converts arguemnt to number using atoi()*/
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv) {
    int i, times;

    if(argc < 2 || (times=atoi(argv[1])) < 1) {
        printf("Usage :%s positive-number\n", argv[0]);
    } else {
        for(i = 0; i < times; i++) {
            puts("Hello");
        }
    }
    return 0;
}

如何用指针表示法表达argv[1]argv[0]

4 个答案:

答案 0 :(得分:5)

argv[i]相当于*(argv + i)

我真的无法想象为什么你会比后者更喜欢后者。

答案 1 :(得分:2)

只是指出一个有趣的事实:

如果你有和数组(int arr[5])或指针,则以下所有内容都是等效的:

*(arr + i);
*(i + arr);
arr[i];
i[arr]; // This last one is rather interesting now isn't it.

答案 2 :(得分:0)

p[n]

相当于:

*(p + n)

答案 3 :(得分:0)

如果你的意思是指针运算,那么argv[1]就是

*(argv + 1)  

但我会选择argv[1]