簡體   English   中英

我在哪里聲明x和y以使此c代碼起作用?

[英]Where do I declare x and y to make this c code work?

我有:

 #include <stdio.h>

 int sum ( int x, int y );

 main ()
 {
 int theSum = sum (10, 11);
 printf ( "Sum of %i and %i is: %i\n", x, y, theSum );
 }

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

但是,當我編譯並運行時,它說x和y未聲明? 任何幫助,不勝感激。 謝謝

在求和調用之前聲明x和y:

main ()
{
int x = 10;
int y = 11;
int theSum = sum (x, y);
 printf ( "Sum of %i and %i is: %i\n", x, y, theSum );
 }

在第三行中,您所要做的就是聲明一個函數sum ,該函數具有兩個參數,均為xy這兩個整數。 您尚未聲明任何變量 這些參數只能在函數本身內部引用。 下面是一個簡化步驟,它將在現階段為您提供幫助,但是您應該嘗試閱讀基本的編程書籍。 Kernighan和Ritchie撰寫的“ C編程語言”是一個很好的起點。

變量是您按名稱引用的內存塊。 它們在您的程序生命周期內可以具有任何值(其類型)-因此稱為“變量”。 必須在使用它們之前聲明它們; 您可以通過告訴編譯器其類型和名稱來做到這一點。 int a意思是“為我保留足以容納任何整數的內存塊,並讓我以后使用名稱a來引用它。 您可以為其分配值: a = 10並且可以使用它: a + 20

您需要了解參數和變量之間的區別才能了解此處的情況。 函數的參數基本上是僅在該函數的生存期內存在的變量。 這是您的sum

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

注意,頂行看起來就像一個變量聲明int x 那是因為。 xy是可以在函數中使用的變量。

您可以通過傳入值來調用sum 實際上,編譯器用傳入的值替換xy 。在這種情況下,您傳遞的是字面量 :10和11。當程序到達sum的調用時,參數xy生效。值10和11,所以return變成return 10 + 11; 當然是21。

請記住, 參數 xy僅存在於該函數中。 您只能在函數中引用它們。 為什么? 因為每對花括號{}定義一個范圍 ,並且在該范圍內聲明的任何內容都只能在該范圍內使用。 這包括變量和參數。

因此,這是一個更完整的示例。 我更改了字母,以便您可以看到使用變量和參數的不同方式:

#include <stdio.h>

int sum ( int x, int y );

main ()
{
   /* We declare our variables */
   int a;
   int b;

   /* We assign values to them */
   a = 10;
   b = 11;

   /* We pass them as parameters to your sum function */
   int theSum = sum (a, b);
   /* And we use them as parameters again, in a call to the printf function */
   printf ( "Sum of %i and %i is: %i\n", a, b, theSum );
}

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

您必須在main中聲明x和y,以便您調用sum(x,y)而不是對2個文字進行調用。 目前,x和y僅在函數sum中定義。

不,你沒有。 您剛剛告訴編譯器,函數sum需要兩個整數。 你可以寫成

 int sum ( int , int );

因此,您應該寫:

 #include <stdio.h>

 int sum ( int , int );

main ()
 {
     int x = 10;
     int y = 11;
     int theSum = sum (x, y);
     printf ( "Sum of %i and %i is: %i\n", x, y, theSum );
 }

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

x和y變量僅作為參數傳遞給函數。 您將無法在主要功能中引用這些內容。 如果您願意,它將是這樣的:

#include <stdio.h>

int sum ( int x, int y );

main ()
{
    int x = 10;
    int y = 11;
    int theSum = sum (x, y);
    printf ( "Sum of %i and %i is: %i\n", x, y, theSum );
}

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

這應該工作。 我希望這有幫助!

在您的main您既沒有聲明x也沒有聲明y只是傳入了文字值10和11。在sum方法的范圍之外,兩個名稱都沒有任何含義。 快速解決:

main()
{
    int x = 10;
    int y = 11;
    int theSum = sum(x, y);
    // etc.

暫無
暫無

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

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