簡體   English   中英

在循環中調用函數

[英]Calling a function within a loop

我正在嘗試一個簡單的加法函數,該函數將從數組an中獲取數字x並向其中添加變量i ,這是for循環內的迭代變量。 而不是單獨添加每個變量並產生以下輸出:

3 2 3

它產生的價值

3 5 5

#include <stdio.h>
int add(int x[], int y);
int main(void) {
    int i;
    int a[3] = {3, 1, 5};
    for(i=0; i<3; i++)
    {
        printf("%d \t", i);
        printf("%d, %d, equals %d \n", a[i], i,  add(a[i], i));
    }
    return 0;
}
int add(int x[], int y){
    return x+y;
}

嘗試

int add(int x, int y){
    return x+y;
}

在您的函數定義中

int add(int x[], int y){

int x[]期望將數組作為參數傳遞。 通過與

      add(a[i], i)

您犯了多個錯誤,例如

  • 在期望使用int *地方傳遞int值,因此從intint *的錯誤和隱式轉換正在討論中。
  • add()內部, x的類型為int * 因此,通過說return x+y; ,本質上又是在(錯誤地)將指針轉換為int類型。

似乎在這里,您只需要一個int變量。 不是數組。 將其(聲明和定義)更改為

int add(int x, int y){

建議:調出編譯器警告並留意它們。 例如,啟用-Wall選項,您將收到一條警告,說

警告:傳遞'add'的參數1會使指針從整數開始而無需強制轉換

 printf("%d, %d, equals %d \\n", a[i], i, add(a[i], i)); ^ 

預期為int *但參數為int類型

 int add(int x[], int y); 

和,

警告:return從指針轉換為整數而不進行強制轉換

  return x+y; ^ 

您正在使用數組作為參數。 請嘗試以下代碼:

#include <stdio.h>
int add(int x, int y);
int main(void) {
    int i;
    int a[3] = {3, 1, 5};
    for(i=0; i<3; i++)
    {
        printf("%d \t", i);
        printf("%d, %d, equals %d \n", a[i], i,  add(a[i], i));
    }
    return 0;
}
int add(int x, int y){
    return x+y;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM