zoukankan      html  css  js  c++  java
  • 《手把手教你学C语言》学习笔记(3)---变量

        编程目的是为了解决问题,编程本质是用计算机的思维操作数据,操作就是算法,数据主要是数据类型,也可以说量,其中分为常量和变量,常量主要是指在量的生命周期内无法改变其值;变量主要是指在量的生命周期内可以随时改变其值。因此,从程序员的角度来看,变量就是个容器,可以存储数据。
    
    1. 变量的意义:从人的角度看,变量是个容器;如果从计算机的角度看,变量什么都不是;计算机的眼中只有内存地址,变量只是内存地址的一个别名,而且还是一个计算机根本不需要的别名。
    2. 变量的声明和定义:变量的声明只是告诉编译器有一个变量,编译器不会对变量分配内存;变量的定义通常包含变量的声明和初始化(赋值操作),编译器完成内存的分配工作;通过赋值符号“=”完成存储单元地址和存储内容之间的关联工作,从而实现通过变量名访问存储内容的步骤。如果不使用变量,需要通过存储单元的地址访问存储内容,对程序操作员来说实在有点复杂。
    3. 变量的命名规则:(1)、变量名只能包含字母(大小写都可以)、数字和下划线‘_’,但不能以数字开头,一般以不以下划线开始;(2)、变量名称一般是区分大小写,而且变量名不能用C语言中的32个关键字;(3)、变量名一般要能够明确表达含义,可以包含多个单词,单词的首字母大写即可,但是循环变量i,j,k一般只用单字母表示即可;(4)、常量一般全部用大写字母表示。
    4. 变量的初始化:变量的首次赋值称为变量的初始化。变量的声明只是表明变量向编译器申明变量的类型,变量的赋值完成编译器对变量的内存分配。变量可以被多次赋值,因此,经常在变量声明的同时对变量进行初始化,在需要的时候再进行赋值操作。
    5. 变量的其他:(1)、变量的类型不同主要是为了表明计算机分配的内存大小的不同,如果分配的内存大小相同,就无需区分变量的大小;(2)为了表明指针变量,经常在变量名前,加上”ptr_”的前缀;(3)对于复杂的类型,经常使用typedef对其进行二次定义,例如为了定义结构体指针,可以采用如下代码:
    常规化的定义结构体,代码片段1
    struct student{
             char name[20];
             int age;
             float record;
         };
    
         struct student stu1;
         strcpy(stu1.name, "zhangsan");                                
         stu1.age = 20;
         stu1.record = 76.5;
    
         printf("The student %s's information: age is %d and record is    %f
    ", stu1.name, stu1.age, stu1.record);
    使用typedef定义的结构体,代码片段2
    typedef struct student{
             char name[20];
             int age;
             float record;
         } Student;
    
         Student stu1;
         strcpy(stu1.name, "zhangsan");                                
         stu1.age = 20;
         stu1.record = 76.5;
    
         printf("The student %s's information: age is %d and record is    %f
    ", stu1.name, stu1.age, stu1.record);
    使用typedef定义的结构体指针,代码片段3
    typedef struct student{
             char name[20];
             int age;
             float record;
         } *ptr_Student;
    
         ptr_Student stu1 = (ptr_Student)malloc(sizeof(struct student3));
         strcpy(stu1->name, "zhangsan");                                
         stu1->age = 20;
         stu1->record = 76.5;
    
         printf("The student %s's information: age is %d and record is    %f
    ", stu1->name, stu1->age, stu1->record);

    请读者自行选择使用哪一种吧!

  • 相关阅读:
    Gradle 是什么
    Spring AOP知识
    Spring IOC常用注解
    spring 依赖注入
    Java实现基数排序
    Java实现基数排序(解决负数也可以排序)
    2020/4/10安卓开发:Spinner下拉框
    Spring ioc使用
    java实现:归并排序
    centos中docker的安装
  • 原文地址:https://www.cnblogs.com/guochaoxxl/p/6823092.html
Copyright © 2011-2022 走看看