2016-08-27 5 views
-3

"Cプログラミングブック"を読んでいて、このプログラムの機能を理解していますが、分かりません。は、strcpyコマンドを実行しない限り変数の値を変更できません

ファーが変数としてどのように機能しているのか分かりません。 fahrには2つの値または1つがありますか?なぜなら、strcpyコマンドを実行しない限り、変数の値を書き込んだら変更できないと思ったからです。たぶん私は間違っています。

出典:

#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ 
    float fahr, celsius; 
    int lower,upper, step; 

    lower = 0; 
    upper = 700; 
    step = 2; 

    fahr = lower; 
    printf("Fahrenheit\tCelsius\n"); 
    while (fahr <= upper) 
    { 
     celsius = (5.0/9.0) * (fahr-32.0); 
     printf("%3.0f \t  %6.1f\n", fahr, celsius); 
     fahr = fahr + step; 
    } 
} 
+0

質問を編集して、実際に問題を説明する意味のあるタイトルを付けました.cのプログラミングに関する質問をしているので、C++タグを削除しました。 – Filburt

答えて

0

あなたは例のフロートFAHRのための変数を宣言するとき、あなたはあなたの変数に与える番号を保存先となるメモリ空間を定義します。変数fahrの内容は、float = lowerなどの代入式で変更できます。ここで、fahrの内容は下位変数の内容と同じです。必要な回数だけ変数に値を割り当てることができます。

char src[40]; 

strcpy(src, "This is a sentence "); 
1

次の2つの異なる世界私の友人を混同している:変数に値を割り当てると、strcpyの.strcpyとは何の関係は、コピーが例えば別の文字列関数ではありません持っています。

fahrは、ちょうどfloat変数です。つまり、代入、加算、減算などの演算を行うと値を変更できることを意味します。

一方、strcpy(文字列コピー)は、文字ポインタを別の文字ポインタにコピーします。 float変数fahrとは関係ありません。

0

fahrは単なる普通の変数です。これは、数バイトのメモリをタイプfloatとして定義します。 Cでは、任意の変数に書き込むことができます。それが言語のためのものです。

変数の値を書き込んだら、strcpyコマンドを実行しない限り、変数を変更することはできません。

おそらくsは6 char秒の配列あり、ここでは、この

char s[] = "hello"; 

のようなコードを見ています。それはしばしば "文字列"と呼ばれますが、これは慣例に過ぎません。コンパイラには配列です。

Cであなたが割り当てによって配列をコピーすることはできませんので、あなたは

char s2[] = s; 

ような何かを言うことはできません。配列の名前は開始点に関連付けられています。配列のコピーが一般的に必要であるため、memcpy(3)やNUL終了文字列の場合はstrcpy(3)など、標準ライブラリの目的の関数があります。

関連する問題