第3节 C语言的优点与缺点

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/love9099/article/details/62046700


1、C语言是一个弱类型高级 语言

   弱类型:就是C语言的编译器,对C语言中出现的数据类型

                   检查不严格,就成为弱类型。

   强类型:比如C++语言就是强类型的编程语言,就是C++的编译器对类型检查比较严格。Java 也是。

   机器语言--->只有 0 和 1 写代码和维护代码都非常痛苦  

   汇编语言--->建立在第一代机器语言的基础上,用一些简单的字符模式一段二进制代码  add mov等。

   面向过程的高级语言---->在第二代编程语言的基础上,使用用了一种面向过程很方便,就像在说话一样的高级的变成语言。

典型的代表就是C语言

   面向对象的高级语言----->也就是在第三带和第二代的基础上演变出来的面向对象的高级语言。


2、C语言有那些优点?

    1.C语言是一个面向过程的弱类型的高级语言。既有高级语言的结构和编程环境,又有类似与低语言(汇编语言)的系统资源的操作能力。

    2.有丰富的运算符、数据类型和表达式,对程序的适应性好。

    3.更贴近于底层,Unix内核就是用C语言写的。执行效率高,是内核移植,驱动开发必不可少的,计算机编程语言发展到现在 没有一种语言能够代替它。做嵌入式的人一辈子都得C语言打交到。

    4.支持函数为基础的机构化程序设计,实现了模块的编程

       。

    5.语言比较简洁、紧凑、使用方便灵活。

    6.可移植性好。(底层很多的三方库  都有C的影子)。


   缺点:

   1.缺点是如果项目比较复杂,大量的开发人员相互之间需要更新一段段代码时,使用C语言的程序设计会让事情变的比较复杂。(因为 C语言不支持  继承  等)

   2.不支持面向对象的编程,所以决定了大型程序开发的时候效率比较低,没有使用面向对象的编程语言效率高。

   3.输出 输出的方式较一些高级语言复杂,要输入 很多参数。

   4.主要缺点体现在在数据封装性上,这也是C和C++的主要区别。体现在对数据封装的不安全。

   5.C语言的语法限制不太严格,体现 类型检查不严格。造成降低程序的安全性,比如比较经典的问题  数组下标越界问题。从应用的角度来说C语言其实比其他的语言更难掌握。

    6.类型检查机制不完善,是缺少代码重用的语言结构。


展开阅读全文

c语言指针问题(谭浩强c语言3版第10章第3

08-03

问题如上所说,都是谭浩强c语言第3版第10章第3节中的。rnrn问题1:rn int a[10]=1,2,3,4,5,6,7,8,9,10;rn x=a;rn for(i=0;i<10;i++)rn printf("%d ",*x++);rn printf("\n");rn //for(i=0;i<10;i++)rn printf("%d ",*x++);rn 注释掉第2个for循环打印*x或者*x++结果都是10rn 但是如果不注释,结果就是垃圾数据(10之后的,不包括10)rn 何解?rn rn 我觉得第一个for最后一次输出后已经把指针指向了a数组最后一个元素之后的那个元素了,但为什么会出现10rnrn问题2:下面2段程序都是要把数组中的元素对调,把第一个和最后一个,第2个和倒数第2个元素对调,依次类推。rnrn#include rnrnmain()rnrn void inv(int a[],int n);rn int i;rn int a[10]=1,2,3,4,5,6,7,8,9,10;rn for(i=0;i<10;i++)rn rn printf("%d ",a[i]);rn rn printf("\n");rn inv(a,10);rn for(i=0;i<10;i++)rn rn printf("%d ",a[i]);rn rn printf("\n");rnrnvoid inv(int a[],int n)rnrn int i,*p;//定义成int i,p;rn p=a;//去掉这里rn for(i=0;i<(n-1)/2;i++)rn rn int j=n-i-1;rn *p=a[i];//*p换成prn a[i]=a[j];rn a[j]=*p;rn rnrnrn//结果为什么是4 9 8 7 5 6 4 3 2 10,但是如果换成上面注释后的内容的话,就可以正常对调rnrn然后我把程序小调整了一下:rnrn#include rnmain()rnrn void inv(int *x,int y);rn int i,*x;rn int a[10]=1,2,3,4,5,6,7,8,9,10;rn x=a;rn for(i=0;i<10;i++)rn printf("%d ",*x++);rn printf("\n");rn inv(a,10);rn for(i=0;i<10;i++)rn printf("%d ",*x++);rn printf("\n");rnrnrnvoid inv(int *x,int y)rnrn int i,p,*j;rn for(i=0;i<(y-1)/2;i++,x++)rn rn j=x+(y-1-i);rn p=*x;rn *x=*j;rn *j=p;rn rnrnrn//结果是10 1 2 3 5 6 7 8 9 4?inv函数中哪里出错了?rn我感觉指针的传递应该没什么为题啊rnrnrnrn以上2个问题我理解不了,还请大神帮助,实在感谢!rn 论坛

存储过程优点缺点

01-04

优点:rn1.由于应用程序随着时间推移会不断更改,增删功能,T-SQL过程代码会变得更复杂,StoredProcedure为封装此代码提供了一个替换位置。rnrn2.执行计划(存储过程在首次运行时将被编译,这将产生一个执行计划-- 实际上是 Microsoft SQL Server为在存储过程中获取由 T-SQL 指定的结果而必须采取的步骤的记录。)缓存改善性能。rn........但sql server新版本,执行计划已针对所有 T-SQL 批处理进行了缓存,而不管它们是否在存储过程中,所以没比较优势了。rnrn3.存储过程可以用于降低网络流量,存储过程代码直接存储于数据库中,所以不会产生大量T-sql语句的代码流量。rnrn4.使用存储过程使您能够增强对执行计划的重复使用,由此可以通过使用远程过程调用 (RPC) 处理服务器上的存储过程而提高性能。RPC 封装参数和调用服务器端过程的方式使引擎能够轻松地找到匹配的执行计划,并只需插入更新的参数值。rnrn5.可维护性高,更新存储过程通常比更改、测试以及重新部署程序集需要较少的时间和精力。rnrn6.代码精简一致,一个存储过程可以用于应用程序代码的不同位置。rnrn7.更好的版本控制,通过使用 Microsoft Visual SourceSafe 或某个其他源代码控制工具,您可以轻松地恢复到或引用旧版本的存储过程。rnrn8.增强安全性:rna、通过向用户授予对存储过程(而不是基于表)的访问权限,它们可以提供对特定数据的访问;rnb、提高代码安全,防止 SQL注入(但未彻底解决,例如,将数据操作语言--DML,附加到输入参数);rnc、SqlParameter 类指定存储过程参数的数据类型,作为深层次防御性策略的一部分,可以验证用户提供的值类型(但也不是万无一失,还是应该传递至数据库前得到附加验证)。rnrnrn缺点:rn1.如果更改范围大到需要对输入存储过程的参数进行更改,或者要更改由其返回的数据,则您仍需要更新程序集中的代码以添加参数、更新 GetValue() 调用,等等,这时候估计比较繁琐了。rnrn2.可移植性差rn由于存储过程将应用程序绑定到 SQL Server,因此使用存储过程封装业务逻辑将限制应用程序的可移植性。如果应用程序的可移植性在您的环境中非常重要,则将业务逻辑封装在不特定于 RDBMS 的中间层中可能是一个更佳的选择。 论坛

没有更多推荐了,返回首页