首页
社区
课程
招聘
[原创]==小弟不才,打算写本C语言的书==欢迎拍砖
发表于: 2010-6-16 11:24 7159

[原创]==小弟不才,打算写本C语言的书==欢迎拍砖

2010-6-16 11:24
7159

看了很多关于C语言的书觉得自己也可以小写一下啦!

本人打算写全套书!更新在我的空间中为广大学子做参考!有版设的朋友出版下更好!

小弟尽力早日写完!

本书以少精炼系统的理解C语言为目标!应为本人很菜,学计算机不到半年,书中难免出诸多错误! 欢迎拍砖!转载表明出处,好与大家探讨!有问邮发:扣扣邮箱,或wybks2006@163.com   haker1king@163.com!

     作者:King┊灬破曉  丨桀骜灬痴情  (一个人)

本书适合,学C语言刚开始的朋友!

下面正式开始:

在开始之前我先在这说几句 废话中的必需品!就是C语言能做什么?

C语言可写做很多的软件的啊,我们用的windows xp系统就是用C语言写的,XP系统你应该够熟悉的了吧,C++是面向对象的,像C,C++,JAVA,VB等等。这都是编程语言,语言这个东西都就是用来沟通的,只不过是与计算机沟通了吧了,QQ用C++就可以做出来的。

另外给各位朋友指明一下大学或自学计算机的路线!

   有了一定的基础后!之后的课程会分为三条线!
第一条线的   第一门课程是 “ 数据结构与算法 ”第二门课程是《编译原理》!
第二条线的   第一门课程是“汇编语言和微机接口技术 ”第二门课程是 《计算机组成原理与体系结构》接下来的一门课程是《计算机操作系统》!
第三条线的   第一门课程是是 C++ 或者 Java一些面向对象的语言!接下来的一门课程应该是 “ 数据库系统“最后还可能学到”计算机网络“
   

下面正式开始:
c语言中的32个关键字

     关键字           意义
  
   auto       声明自动变量,缺省时编译器一般默认为atuo

   int        声明整型变量

   double     声明双精度变量

   long       声明长整型变量

   char       声明字符型变量

   float      声明浮点型变量

   short      声明短整型变量

   signed     声明有符号类型变量

   unsigned   声明无符号型变量

   struct     声明结构体变量

   union      声明联合数据类型

   enum       声明枚举类型

   static     声明静态变量

   switch     用于开关语句的

    case      开关语句的分支

   default    开关语句中的其他分支

   break       跳出当前的循环

   register    声明寄存器的变量   (一般程序中很少出现的)

   const      声明只读变量

   volatile   说明变量在程序执行中可以被隐含的改变

   typedef    用以给数据类型取别名(当然还有其他的作用)

   exterm      声明变量是在其他的文件正声明  /  也可以看做是引用变量

   
    return    子程序返回语句    (可以带参数 ,也可以不带参数)

    void       声明函数无返回值或无参数,声明空类型指针

    continue   结束当前的循环  开始下一轮的循环

    do         循环语句的循环体
   
    while      循环语句的循环条件
  
    if         条件语句

    esle       条件语句的中否定的分支
  
    for        一种循环语句的

    goto       无条件的跳转语句

    sizeof     计算对象所占的内存空间的大小

    以上是c语言中的32个关键字!现在我们来一一介绍一下!
   
    但在介绍前,首先要知道两个重要的概念! --定义和声明--

    什么是定义?
   
    所谓定义就是编译器创建一个对象,为这个对象分配一块有度的内存空间并取一个好听

的名字(所谓好听的名字就是看了名字知道是男是女,或是那名族的,也就是见知意),这

个名字就是我们经常所说的变量名 或 对象名。
   
    但要注意,你所取的名字一旦和存储空间 建立 一一对应的关系,就以为这他们结婚!

     什么是声明?
      
     声明有两重含义

     第一,告诉编译器,这个名字已经匹配给了一块内存!名花有主了!

暗恋名花的人多的去了,所以有时可能需要多次的声明!名花是我的,谁跟我抢和你拼)

      第二,告诉编译器,这个名字我先预定了,别的地方不能在用这个名字来做变量!

其实就跟你小时候一样 你早和你 小学 初中 高中的 女朋友定好的!你是我的,我是你的

我们生生世世不弃不离!但后来你小俩口的事 我就不知道了!

   
       记住:定义声明最重要的区别就是有没有分配一块有度的存储空间!定义保伊

人,声明只能和稀粥看电视!


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 7
支持
分享
最新回复 (12)
雪    币: 15
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
理解了这两个概念后看关键字!
   
1、auto      一个最宽宏大量的关键字
   
    你可以认为他不存在,但不一定要知道有么个老大在!

2、register   一个反应最快的关键字

    register:用来请求编译器 尽可能的将cpu内部的存储空间-寄存器 分配个她已

达到寻址访问的速度!register 你就当她 世界上最美的美女吧!你是轮不到的!

    寄存器---cpu 和 内存之间的 桥梁

    数据从内存里拿出来,先放到寄存器,然后又cpu从寄存器中读数据处理。然后再

放回寄存器中,在转存到内存中!cpu不和内存直接来往!

    寄存器的存在时因为   ”速度“!另外有关寄存器的知识还很多!学破解 和外

挂制作一定要 和寄存器 打好交道!

   和美女register大打交道的时候要注意:意味着 register变量必须是一个单个的  

值,并且其长度应小于或等于整型的长度。而且 register变量可能不存放在内存中,

所以不能用取址运算符 “&”来获取 register变量的地址。

3、static 最名不符实得关键字
   
   不要以为关键字 static 很安静!其实他也不是个省油的灯

    C语言中他中俩个作用:

     第一、修饰变量
   
           变量分为全局变量和局部变量!他们都是存放在内存中的静态区。

           静态的全局变量的作用域,仅限于变量被定义的文件中,其他的文件中即使你使exterm

声明也不能使用!所以在函数调用的时候一定要住以 变量的作用域!
            
           静态局部变量。 在函数体内定义的,就内函数体内里用,就想你口袋里的钱就你用,

不给我用一样!其实更准确的比喻是这样的,你的时间就只能有你用有你支配,不能分享给别人!

当你去哪边的时候,你的一切都没了!在C语言中由于被 static修饰的变量总是存在内存的静态区

,所以即使这个函数运行结束,这个静态变量的值还是不会被销毁,函数下次使用时仍然能用到这

个值。

            
           
   
     第二、修饰函数

           用static修饰函数,就是使得函数成为  “静态函数”---指函数的作用域本文件中!

使用静态函数的好处,就是定义函数是不用担心名字有冲突!就想你给你的宝宝取名字时,不用担

一样,应为你宝宝上面有个家庭,有个村,有个乡、、有个青海省、、有个中国!

           static 在 C 中有了第二种含义:用来表示不能被其它文件访问的全局变量和函数。

4、基本的数据类型:
         
              int short long char float double
   
          有关以上几种类型就多不将了!这都不知道,你就命中注定单身了!应为 int short

long  char float double 是在C语言中的六个基本数据类型!怎么理解他们呢?小弟在这打个你恰

当的比喻:中国人都喜欢吃饺子,那你肯定见过饺子皮是怎么来的了(没见过的话,你可以回火星去

了)是不是有个模具啊,咔咔的在面就下饺子皮就出来了!而这六种数据类型就像不同型号着模具

咔咔嗲在 内存上几下 就出现了几个不同的的内存模块,就可以存放不同类型的数据了!

5、sizeof---C语言中的李宇春

           sizeof 一个常年被人误解为是函数,就想李宇春常年被误认为是男的!
   
           sizeof的身份有我给你当面鉴别。李宇春的身份就有你私下去鉴别了!

          例子:

               int i=1;

               A,sizeof  (int);B, sizeof (i) C,sizeof int D,sizeof  i

              在你的工具上试试!你看看结果是怎么样的? (*^__^*) 嘻嘻…… 你就会发现李宇

春原来也是MM啊!

6、signed  、unsigned  两个你女朋友判断你的关键字!

               计算机底层只识别0、1!就像老师只关心作业做的对或错!不过你发现没,你copy

你女同桌的作业怎么就被老师发现了呢?  计算机有是怎么知道正负的呢?signed 、unsigned就出

场了。
               signed、表示有正负之分。(小弟不才,就不做比喻了)

               
               unsigned、表示无正负之分。只要是你爱我试真的就可以!(小弟不才,就不做比

喻了)

7、if、else完美组合!

       if语句很简单。多不说了!但在使用的时候,还有写地方需要注意!

       在这我就说一点:想想

              if(1=i)和if(i=1)那个更使用些?答案是前者比后者好用,但后者比前者好!

这要和编译联系在一起,前者能避免一些错误情况的发生,而后者就是好看!(*^__^*) 嘻嘻……

这时候你是不是要考虑下 你找另一半的时候是不是要思考莫些问题啦?

              对了忘说他们之间的相互嵌套!不要套 很多层!一般三层外的尽量调用函数!
2010-6-16 11:25
0
雪    币: 15
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
8、switch  、case实力派组合!

         实力派的组合switch、case 有着 更为强悍的功能!面对多分支问题,他可完美的解决!

其基本格式:

         switch(条件)
         {
             case Value1:语句;break;

             case Value2:语句;break;

             case Value3:语句;break;

             、、、

             default:
                     break;

           }
   
                注意:
                     1、case后面的值的要求

                     (case后面只能是整型或字符型的  “常量”或“常量表达式”

                     2、case后语句排列的顺序

                       
                         按字母或数字顺序排列各条case语句

                        
                         把正常情况放在前面,而把异常情况放在后面

                         按执行频率排列case语句

                        
9、do、while、for    最默默无闻的关键字

                  当某些事要多次重复的做!那你就找他们!do、while、for !他们是C语言中

的种循环语句.

            下面我来带大家逐个认识下!

            do,

               使用的基本格式:

                               do

                                 {

                                   循环体

                                 }
                                   
                                      while(表达式);

           while,

                使用的基本格式:

                                while(表达式)

                                     {
  
                                        循环体

                                       }
           for,
            
               使用的基本格式:

                                for(表达式1;表达式2;表达式3)
              
                                    {
  
                                      循环体     注释:表达式1----循环变量附初值
                                                       表达式2----循环条件
                                       }               表达式3----循环体变量的增值

                                    

             以上的前两种循环语句,看相似。但是有区别的!do-while是先执行一次循环体!再

去判断表达式,而while是先判断表达式!俩者在什么情况下你的用,我想你比我更清楚,应为你想

要那样的女朋友只有你自己知道了!

            
             在使用循环语句的时候可能应需求 采用俩个辅助的关键 break 和continue 。他们

俩个都是结束循环用的!但是有区别的!break 表示结束终止“本层”循环。continue 表示结束终

止“本次”循环!

            
              循环语句的精髓:在解决显示社会中的很多问题的时候,单一的循环是不能完成一道计



机的作业,c语言中循环语句的精髓就是能相互的嵌套,这样就可以将多循环的作业分成 若干次 利用

循环

嵌套就可以解决问题!但本人建议在使用循环嵌套的时候把循环保持在三层中最好!在多的话建议使用

函数

调用!应为C语言是结构化的程序设计,具有鲜明的结构化的风格是C语言的一大亮点!

10 、goto最不好控制的字

     goto 语句可以灵活跳转,如果不加限制,它的确会破坏结构化设计风格;goto 语句经常带来

错误或隐患。
                             (如有喜欢的可邮发:hacker1king@163.com大家一起探讨)
2010-6-16 11:26
0
雪    币: 15
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
11、void若有若无的字

     void的是意思是“空类型”  一般是若有若无的那种!但C语言中  它还是有一定的作用的。void

几乎只有“注释”和“限制”的作用.

      void 几乎全部作用在于:
      
           1、对函数的返回值的限制

           2、对函数的参数的限制
  
       void的优点,在不同类型的数据赋值的过程中,需要考虑到数据类型的转换。但是入时void的
话,就需要了!

        还有一点要声明下,在C中为避免函数的返回值的类型,引起的问题和降低程序的注释,建议

要求,注明函数的返回值的类型,包括 空类型 void!

         void * 就是所谓的空类型指针!使用是一定要注意。应为 涉及到内存控制。我在后面的说
指针的时候会说明的!

         void不同int float 、、、等类型,在编译的时候,编译器给后者分配相对应大小的内存,

但void分配了多少?答案是 我不知道。我只知道 世界上的人 只有 男人和女人(泰国的不算)!void

就想你对你女朋友的爱  到底有多少呢?

12、return

          return是用来终止一个函数并带回一个返回值。

          return  (   );   括号可以省略,但我建议还是做个老实人,写上!

          return返回的到底是什么呢?

          来给你们经典的例子:

                            char *Love(void)

                              {
                                 char LOVEZ[20]

                                  、、、

                                 通过一些判断得出你对你女友的爱 到底有多少

                                  、、、

                                  return LOEZ;

                                }

          (*^__^*) 嘻嘻……拿去编译下!看看结果咋样?

          O(∩_∩)O哈哈~ 错误了吧!

           怎么会出错了呢?很简单,搞错对象了呗,爱错人啦!人家名花早和那个谁签 下了 同生

共死的协议书了!函数诞生之日 LOVEZ也随之诞生了!函数结束了 人家名花 LOVEZ早去殉葬去了!

13、const

         const是constant的缩写,是恒定不变的意思,有译为常量常数的意思。而在C语言中有它修
饰还有另一层的含义。准确的说他不但修饰的是只读性的常数常量,在编译器编译的时候不知道其内存
存的是什么。也有人说const如果叫做readnoly的话更好理解,可见它的这层很容易被狐狸的作用。
        
          const修饰只读变量,定义const只读变量,具有不可变性,因此,const修饰的只读变量的
必需在定义的同时初始化。
        
          留个小实验自己下去亲自做下,加强理解和记忆以及提高日后写代码的经验,

          在switch 语句中case后面用const修饰的只读变量试着编译下,看看结果,再思考下why?

          这时候C语言学的还是那么回事的人会想起#define,但我告诉你const和define是有着本质
的区别的,首先你回到我前面罗列出来的关键字中找找看有没有define这个字。const定义的只读性的
变量从底层的汇编的角度来看的,只是只是分配了对应的内存地址,而#define给出的是立即数,所以
const定义的只读变量在程序的运行过程中只有一份的cpoy(它是全局的只读变量,存放在静态区),
#define定义的宏常量就不一样了,在内存中存放着若干的cpoy,#define在预编译的时候就可以替换

而const修饰的只读变量在编译的时确定的是其确切的值。#define宏没有类型,而const修饰的只读的
变量具有明确的特停的空类型。

        
          既然是用来修饰的,就想美一样 不但可以修饰 女的-美女,食物-美食、、、、当然const

同样可以修饰其他的,我们来一次的看看const能修饰那些,以及修饰后的作用等等

         
            const修饰一般的变量

            一般常量指的是简单的但类型的只读的变量,在定义的这种只读的变量的时,修饰符
const 可以在类型符的前面也可以在后面,即以下的俩种方式都对。

              const int i=1;    或    int  const  i=1;

            
              const修饰数组

              定义只读性的数组的时定义方式和以上两种相同,但别忘了初始化。

              const修饰指针
   
              const修饰的方式有以下的方式:

              const int*p ;    /*p可变,p指向的对象不可变*/

              int  const *p ;  /*p可变,p指向的对象不可变*/

              int  *const p ;  /*p不可变,p指向的对象可变*/

              const int *const p ;  /*p不可变,p指向的对象不可变*/

              在这为大家说下编译器怎么解析这些语句的,有助于大家理解和记忆,你到看到这里,
说明很是支持我,我还有什么好保留的呢?

              (*^__^*) 嘻嘻…… 谢谢支持哦!

              在解析这些语句的时候 采用侧重法 意思就先忽略类型名,在看const离谁近 和谁关系
好,就去修饰它!

              const(int)*p ;/*int被忽略const离*p近就去修饰它,而*p是指针,则*p指向的对
                                 象是不可变的*/

             (int)const *p ;/*int被忽略const离*p近就去修饰它,而*p是指针,则*p指向的对

                                 象是不可变的*/

             (int)*const p;/*int被忽略const离p近就去修饰它,所以p不可变,p指向的对象看

                               变*/

              const (int) *const p; /*int被忽略,第一个const修饰*p第二个const修饰P,所以

                                      *p和p指向的对象都不可变*/

              const修饰函数的参数

              const修饰符也可以修饰函数的参数,当希望中这个参数不被人一的修改,就看用const

来修饰,例如
         
            void X_du( const int i);

            这样就潜意识的告诉了编译器i在函数体内部能改变,防止了一些无意的修改。
            
            const 修饰函数的返回值

            const修饰符也可以修饰函数的返回值,返回值不可被修改,这在很多很多的软件中开发
中用到的,(*^__^*) 嘻嘻…… 想了解更多的话,去问百度大婶。

          (*^__^*) 嘻嘻……  看出来了吧, 你下载的那个外挂,你该了它的一些内容,但还是那样

,不能秒杀吧!问题就在这。恶心吧,那就好好的学,预期用别人的挂,还不如自己写个挂,在说下的

挂,99.99%都捆绑了木马。╮(╯▽╰)╭ 我用了那么多的挂,怎么我的号没被盗呢,(*^__^*) 嘻嘻…
…那只能说明你的号  太水了!
2010-6-16 11:26
0
雪    币: 780
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
King┊灬破曉
2010-6-17 08:16
0
雪    币: 20
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
严重支持楼主写书!
2010-6-17 17:20
0
雪    币: 139
活跃值: (25)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
7
被楼主的精神和勇气感动,支持一下
2010-6-17 22:15
0
雪    币: 160
活跃值: (56)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
楼主弄成pdf版的就好了!
2010-6-18 23:05
0
雪    币: 213
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
学计算机不到半年?
太有勇气了
2010-8-12 22:19
0
雪    币: 44
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
支持是必须的嘛
2010-8-12 23:02
0
雪    币: 74
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
lz精神可嘉,但学习计算机不足半年,不清楚lz对c的精华能够领略多少,从lz的少许文字中可以看出lz文采还有待提高,总体的说就是读起来毫无意味,书中的加上比喻是一个好的事情,但要言简意赅。还有lz“行云流水”的结构很让人乏味的,因为中国这种书太多了,可以结构题材出新,技术上的书籍近两年像《把脉VC++》中的茴香豆的N种写法,着实让人眼前一亮,很且发人深醒。
     lz应该是看到现在市场上的C方面的书籍都是互相抄袭,而且涉猎太窄,毫无技术可言,更像是名词介绍。可是一本技术的书籍的诞生,他的背后是作者智慧的结晶,市场上大部分的书都不是真正的技术研究者写的,有的甚至就是编辑搜集资料整理而成的。
     等你有一天真的深得语言的精髓,也许你就不会觉得写一本书是那么容易的事情了。
     写这么多,没有打击lz的意思,lz精神可嘉,让我也很汗颜。同时也希望lz的书早日完成,那时候我相信你的想法会和今天不同的。
2010-8-13 12:26
0
雪    币: 73
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
任重道远!楼主加油吧!
2010-8-20 21:09
0
雪    币: 90
活跃值: (91)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
if(1=i)和if(i=1)那个更使用些?

我句话很那个吧~-~
2010-8-21 21:16
0
游客
登录 | 注册 方可回帖
返回
//