和小石头一起学C(C语言之结构体 一)

宋·罗大经《鹤林玉露》:“绳锯木断,水滴石穿。”

水不断下滴,可以闹穿石头。比喻只要有恒心,不断努力,事情一定成功。

看此文章者必读以下内容:

  1.此文章上的内容全是个人之感悟,不代表任何的权威性。

  2.此文章的代码完全可以编绎运行。

  3.此文章的例子只是入门级的。学完之后。不敢保证诸位可以成为高手。也不敢保证诸位可以写出什么超级的项目。只是一个入门的例程。不过我会的以后的时间内增加难度。

     4.代码运行后的界面全是DOS的黑白界面。(呵呵。因为这不是windows c 编程。不过我以后会写关于这方面的内容的)

        看此文章系列者,必须抱有"绳锯木断,水滴石穿。"

     作者简历一下。呵呵这可不是宣传我自已。本人编程10年。做过各种语言开发项目。(Web方面除外)。

手机开发。MIS系统开发。研发项目开发。远程控制项目开发(不是你们想的那种HACK级的。只是普通的合法的正常的)

所以我一直喜欢编程这个行业。废话太多了(有人该扔砖头了)

现在言归正题。

     本篇中的程序开发环境是 C与C++程序设计学习与实验系统 (版本以你看文章的时候最高版本,呵呵。本人现在用的是2010.2 共享版),切记不可以使用破解的版本。

因为本人认为搞程序的人,首先要尊重其它程序员的劳动成果。因为你不尊重别人的成果。将来有一天你辛苦开发的程序,也会被别人破解后使用。

佛日:业有三报,一现报,现作善恶之报,现受苦乐之报;二生报,或前生作业今生报,或今生作业来生报;三速报,眼前作业,目下受报

又跑题了。怪不得我女朋友,总说我是蚂蚱(思维跳跃太快)。

     现在开始正式的学习C语言的结构体,请允许我在多说几句,呵呵。你可能会问,你为什么上来就学习结构体,而不是从头学起呢?这样会让刚接触C的人

感到困惑,这可以放心。代码中涉及到的基础知识,我会仔细讲解的。我个人认为如果上来就直接讲解C的基础知识。肯定会越看越困越烦。呵呵。

现论来源于实践。在通过实践去检验所学的理论。好了,别在说其它的了。下面正式开始。

     

      结构体是一种 数据类型(一会在讲解什么是数据类型),它把互相联系的不同类型的不同类型的数据组合成一个整体。

结构体定义的语法如下: (有的初学者非常不注重看语法格式。其实语法格式对开发尤其是初学者很有帮助。我们回头想想。那些辛苦编写的代码一运行。就报出各种各样的错误。其实仔细一看就是语法格式上的错误居多。)

  struct 结构体名称

{

  成员说明;

};/*注意 ;这个符号不可以没有。否则出错*/

题外语:(呵呵  /*       */    这个符号就是C语言中的注释写法。为什么要写注释,因为注释是给别人看的。写给以后的你看的。除非你写的代码永远封存。)

/*
文件名称 :
作者:
编写日期 :
说明 :
测试要点:  
修正履歴:
*/

以上写法,是我个人写项目时使用的格式,呵呵。个人认为,除非极其简单,否则对项目应有注释说明。

尤其是 测试要点: 和 修正履歴:

没有人写完的项目不进行修改的。这样的好处只能意会不可言传。不过你要是不写,呵呵,有你苦头吃。(:) 题外语结束)

现在我们进行项目实践,呵呵(来点掌声)

首先我们运行 C与C++程序设计学习与实验系统 2010.2 这个程序图标。


 

 方便吧。直接点运行按纽(那个画三角的图标)就可以看到运行后的效果。(感谢作者为我们开发出这么好的工具软件)

现在我们开始写程序。

写程序前一般要先问一下自已。

1.这个程序是做什么的。 2.这个程序谁来使用

现在我来回答一下。这个程序只是学习C语言中结构的一个例子。 这个程序主要是给看这篇文章的人使用。

目的明确,现在开始工作。

代码如下:

/*
文件名称 :noname0.c
作者:小石头
编写日期:20100527
说明:1.学习C语言中结构的一个例子。
       2.这个程序主要是给看这篇文章的人使用。
测试要点:  
修正履歴:
*/
#include "stdio.h"
void main()
{
   
}

struct Stu //定义学生信息结构
{
    int age;//年龄
    int Sex;//性别
 };

 Stu就是我们定义的结构

学生信息一般包括如下信息。1.学号 2。姓名 3.年龄 4.性别

1、2、涉及到字符串的概念。所以先临时定义二个变量。

题外语:数据类型是所有编程语言中的重要的一个概念。开发语言只是一个工具而已。C也好,C++、C#、JAVA也好。在这些开发语言中,数据类型都是一个很重要的概念。

掌握好学习方法。你才能触类旁通。一通则百通。这也是为什么有的人。对新的开发语言掌握着很快。因为在他们眼中,开发语言只是工具而已。(题外语结束) 

C的数据类型分为4种:整型浮点指针聚合类型(结构体和数组)

我们现在学的结构体也是数据类型。

整型类型。包括字符、短整型、和长整型。它们又分为有符号和无符号的区别。是不是看到这有点糊涂了。呵呵。

其实。计算机主要是和内存打交道。内存中存放的数据称为变量。因为是可变化的量。

定义变量时一定要先定义其数据类型。

比如 一个人的年龄。他的范围就是 1岁至120岁(我以为已经是长寿了)。

定义起来。就是int age 或是 unsigned int (无符号型) 但是

一个人的化学成绩 如果也用int 就不行了。因为成绩不可能全是整数。例如:A这个人的成绩为95.5分你如何表示呢?要用到浮点型

 /*
文件名称 :noname0.c
作者:小石头
编写日期:20100527
说明:1.学习C语言中结构的一个例子。
       2.这个程序主要是给看这篇文章的人使用。
测试要点:  
修正履歴:
*/
#include "stdio.h"
void main()
{
   
}
struct Stu //定义学生信息结构
{
 int age=25;//年龄
 int Sex;//性别
 
};

 如果这段代码改成这样。运行一下,你会发现提示有错误。错误在那呢?

原来在这里

int age=25;//年龄

结构中的数据类型定义以后。是不能给其赋初值的。呵呵,是不是有点画蛇添足的感觉。

int age ;//年龄

现在在运行程序,运行结果如下。

呵呵一个空白程序。

如果这是一个项目的话,你的老板肯定会疯掉。什么都没有。怎么办。继续

我们打出一个人的信息。

打出的结果为

A的年龄是25

A的性别是0

  

当当当,新鲜的代码出炉了。

/*
文件名称 :noname0.c
作者:小石头
编写日期:20100527
说明:1.学习C语言中结构的一个例子。
       2.这个程序主要是给看这篇文章的人使用。
测试要点:  
修正履歴:
    小石头 20100527 程序中增加输出A这个学生的年龄和性别信息*/
#include "stdio.h"
void main()
{
    struct Stu A ;
    A.age=25;
    A.Sex=0;
    printf("A的年龄是%d",A.age);
    printf("A的性别是%d",A.Sex);

}
struct Stu //定义学生信息结构
{
 int age;//年龄
 int Sex;//性别
 };

先不讲解内容。运行一下看其运行后的结果(满怀希望中)。

 

 

 

出现问题了。这是什么原因呢?

 

 呵呵。搜搜百度。遇到问题第一我们不要着急。要学会分析错误。只有会分析错误,才能更好的解决错误。

c:\documents and settings\lanzhi.o-rid\local settings\temp\temp927\noname0.c(14) : error C2079: 'A' uses undefined struct 'Stu'
c:\documents and settings\lanzhi.o-rid\local settings\temp\temp927\noname0.c(15) : error C2224: left of '.age' must have struct/union type
c:\documents and settings\lanzhi.o-rid\local settings\temp\temp927\noname0.c(16) : error C2224: left of '.Sex' must have struct/union type
c:\documents and settings\lanzhi.o-rid\local settings\temp\temp927\noname0.c(17) : error C2224: left of '.age' must have struct/union type
c:\documents and settings\lanzhi.o-rid\local settings\temp\temp927\noname0.c(18) : error C2059: syntax error : ')'

通过上面的提示内容。分析原来是Stu这个数据类型系统不识别。

为什么不识别。语法没有错。

小石头思考中。

小石头突然想到。C语言中变量类型定义的顺序问题。是不是顺序造成的。代码修改一下。

/*
文件名称 :noname0.c
作者:小石头
编写日期:20100527
说明:1.学习C语言中结构的一个例子。
       2.这个程序主要是给看这篇文章的人使用。。
测试要点:  
修正履歴:
    小石头 20100527 程序中增加输出A这个学生的年龄和性别信息
*/
#include "stdio.h"
struct Stu //定义学生信息结构
{
 int age;//年龄
 int Sex;//性别
 
};
void main()
{
    struct Stu A ;
    A.age=25;
    A.Sex=0;
    printf("A的年龄是%d",A.age);
    printf("A的性别是%d",A.Sex);

}

在运行一下。

呵呵。你看我这表情就知道。运行成功了。

 

 

我们在写程序的时候,无论项目的大小。就要心中想着这个程序的使用者。这样才能发现问题。

这个程序一共有二个问题:

1.性别是用数字代替的。很难让人明白。这个A的性别到底是男还是女。

2.显示信息中的年龄和性别之间没有换行。让使用者瞅着很不舒服。

这些问题我会在中篇中进行处理和讲解。

呵呵。此次学习到此结束。下课了。

该去陪我的女朋友 

 

 

原文地址:https://www.cnblogs.com/littlestone/p/1745033.html