除非执行命令strcpy,否则无法更改变量的值

时间:2016-08-27 22:02:17

标签: c

我正在阅读“C编程书”,我理解这个程序是如何运作的,但是,我不明白一件事。

我不明白fahr如何作为变量发挥作用。 fahr有两个值还是一个?因为我认为一旦为变量写了一个值,除非你执行命令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;
    }
}

3 个答案:

答案 0 :(得分:1)

你把我朋友的两个不同世界搞混了。

fahr只是浮动变量。这意味着如果我们对其执行算术运算,例如赋值,加法,减法,它的值就可以改变。

另一方面,strcpy(字符串复制)将字符串指针中的字符串复制到另一个字符指针。它与您的 float 变量fahr无关。

答案 1 :(得分:0)

当你声明一个变量例如float fahr时,你定义一个内存空间,在该空间中将保存你给变量的数字。变量fahr的内容可以使用赋值表达式(例如float = lower)更改,其中fahr的内容与较低变量的内容相同。您可以根据需要为变量赋值。为变量赋值与strcpy无关.strcpy是一个将一个字符串复制到另一个字符串的函数,例如:

char src[40];

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

答案 2 :(得分:0)

fahr只是一个普通的变量。它将几个字节的内存定义为类型float。在C中,您可以写入任何变量;这就是语言的用途。

  

我想过,一旦为变量写了一个值,除非你执行命令strcpy,否则你不能改变它。

你可能正在看这样的代码

char s[] = "hello";

此处,s是6个char数组。它通常被称为&#34;字符串&#34;,但这只是一种约定。对于编译器来说,它是一个数组。

你不能说像

这样的话
char s2[] = s;

因为在C中你不能通过赋值来复制数组。数组的名称与其起点相关联。由于通常需要进行数组复制,因此标准库中有用于此目的的函数,例如 memcpy (3)和 - 对于NUL终止字符串 - strcpy (3)。