在C

时间:2015-08-23 07:54:41

标签: c arrays pointers

我正在尝试将数组传递给C中的函数。我知道你不能通过值来做到这一点,只能用指针来做。

到目前为止,我确保我的数组(intInput)在main(void)之外声明,以确保它的范围是正确的,但是当我运行程序时,它会在到达该行时崩溃:

printf("%d", intInput[u]);

我怀疑我在这里弄乱了指针的使用,特别是对函数的声明调用和参数的传递。我做错了什么?

#include <stdio.h>
int intInput[16];
int main(void)
{
    // Reference post http://web.eecs.umich.edu/~bartlett/credit_card_number.html
    char strType[20];
    printf("What card type do you want to verify? ");
    scanf("%s", strType);   
    int c;
    int i;

    for (i = 0; i <= 15; i++)
    {
        printf("Please insert next char: ");
        scanf("%d", &c);
        printf("Character entered: %d \n", c);
        intInput[i] = c;
        printf("Value of i is: %d \n", i);
    }

    mastercard(intInput[16]);
}

void mastercard(int intInput[])
{
    // Prefix 51-55, Length 16, Check Digit Algorithm MOD 10
    int u, intTotalAlternate;
    u = 15;
    intTotalAlternate = 0;
    puts("GOT THIS FAR");
    while (u > 1)
    {
        printf("%d", intInput[u]);
        intTotalAlternate += (intInput[u]);
        printf("value %d \n", (intInput[u]));
        u -= 2;
    }
}

4 个答案:

答案 0 :(得分:5)

echo ' <table class="table-bordered"> ';

mastercard(intInput[16]); 不存在 它也是类型intInput[16]的值,它与函数所期望的不兼容。

打开所有编译器警告并提醒他们

答案 1 :(得分:0)

您应该像这样致电mastercard

mastercard(intInput);

mastercard需要一个int数组,但是你传递一个int,即intInput的16位,而不是数组。

答案 2 :(得分:0)

我不确定您要使用该代码尝试什么,或者您希望做什么,但您的程序应该如下所示:

#include <stdio.h>

int intInput[16];

void mastercard(int *intInput){
    int u, intTotalAlternate;
    u = 15;
    intTotalAlternate = 0;
    puts("GOT THIS FAR");
    while (u > 1)
    {
        printf("%d", intInput[u]);
        intTotalAlternate += (intInput[u]);
        printf("value %d \n", (intInput[u]));
        u -= 2;
    }
}

int main(void){
    int c,i;
    char strType[20];
    printf("What card type do you want to verify? ");

    if ((scanf("%19s", strType)) != EOF)


    for (i = 0; i < 16; i++)    {
        printf("Please insert next char: ");
        if ((scanf("%d", &c)) != EOF)

        printf("Character entered: %d \n", c);
        intInput[i] = c;
        printf("Value of i is: %d \n", i);
    }

    mastercard(intInput);
}
  

printf(“请插入下一个字符:”);

你确定你需要int c而不是char c吗?

答案 3 :(得分:0)

没有人对此说了什么,所以我遇到了一个问题:

当他使用全局变量时,他为什么要使用指针? 无论如何,他可以在任何地方访问它,因为他使用了一个全局变量,通常不应该在afaik完成。或者我错过了什么?

无论如何,有关数组和指针的标准教程可以帮助你OP。