我正在尝试将数组传递给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;
}
}
答案 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。