加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码网 (https://www.900php.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > Asp教程 > 正文

C语言和JAVA语言语法的不同点_c语言为什么叫c

发布时间:2023-03-01 13:30:29 所属栏目:Asp教程 来源:转载
导读: 自工作以来,先用VB、ASP这些编程;后来转用Java,对面向对象的语言有了些许了解,如今又主要用C语言写一些代码。由于学校的时候学过一些C语言的知识,后来也大略写过一些几百行简单程序,

自工作以来,先用VB、ASP这些编程;后来转用Java,对面向对象的语言有了些许了解,如今又主要用C语言写一些代码。由于学校的时候学过一些C语言的知识,后来也大略写过一些几百行简单程序,因此这段时间来,对C的上手也算比较快速。

面对的所有东西都可谓博大精深,更何况那么多人使用的Java以及历史悠久的C语言。不过手之所至,按键不由此起彼伏,便有了对C语言和Java的一些感悟。

相同的地方:

1、语法类似:

由于Java可以算是从C++发展而来的,因此Java与C语言的语法比较类似

2、编程的熟练程度就是对语言程序库的掌握程度:

从某种程度上来说,编程语言都是由语法和相应的程序库所构成,Java有自身的类库,C语言则有标准库。所谓的编程,就是使用与语法来调用和组合程序库中的函数。

不同的地方:

1、内存管理

在Java中,基本不用考虑内存的问题,如果想用一个对象,new一个就可以,这个过程的背后则是JRE为对象分类的一定内存,当JRE发现你不再使用这个对象的时候,他就会自动回收内存,也就是说你只管借东西,不用管归还,因为与有人当你的跟班,在你不使用的时候就把东西归还了,不过这个过程还是有的,只不过是JRE作的而已。

但是C则不同asp语言,如果你想用,你可以用malloc之类的方法申请内存,当你使用完了,因为没有跟班的,你需要自己把这块内存归还回去,也就是调用free方法来完成这个任务。由于需要显式的归还内存,因此当一个函数需要将一块内存返回给调用者的时候,问题就比较复杂了,不如面向对象和具有内存回收功能的Java那么直观了。对于这个问题,在C语言中,有几种解决方案:

(1) 在调用者中先分配好内存,作为参数传入到被调用的函数中

(2) 在被调用的函数中分配,使用完后在调用者中释放

(3) 在被调用函数中使用static变量,可以将该变量返回

2、面向对象

Java的面向对象的特点很明显,而C则是一个地道的结构化语言。 Java中有一个字符串类String, 通过调用 String.length()就可以知道字符串的长度,但是在C语言中,则需要调用函数strlen(str)来得到字符串(字符数组)的长度。由于C不是面向对象的语言,也就没有this的概念,因此当使用一个与某个“东西”相关的函数时,就需要不厌其烦的将代表这个“东西”的变量作为参数传递进去。

3、名称空间

Java通过包(package)来实现名称空间,在C语言中,所有的函数都处于同一名称空间,也就是没有名称空间,因此就会很多程序提供的api接口函数都有一个前缀,例如MYSQL的mysql_init(), mysql_real_connect(), mysql_real_query()等函数名称前面的mysql_。

附:C语言编写的split函数,从中可以看看C的内存管理

#include #include #include

char **split(char *str, char *delim)

{

static char **str_arr = NULL;

static char *cstr = NULL;

if (str_arr)

{

free(str_arr);

str_arr = NULL;

}

if (cstr)

free(cstr);

cstr = (char *)calloc(strlen(str)+1, sizeof(char));

strcpy (cstr, str);

char *p;

int n = 0;

p=strtok (cstr, delim);

while (p!=NULL)

{

n++;

if (str_arr == NULL)

str_arr = (char **)malloc(sizeof(char *));

else

str_arr = (char **)realloc(str_arr, n * sizeof(char *));

str_arr[n – 1] = p;

p=strtok(NULL, delim);

}

str_arr = (char **)realloc(str_arr, (n+1) * sizeof(char *));

str_arr[n] = NULL;

return str_arr;

}

int main ()

{

char *str = “Please split this phrase into tokens”;

char *delim = ” “;

char **str_arr ;

str_arr = split(str, delim);

while (*str_arr)

{

printf(“/t%s/n”, *str_arr);

str_arr++;

}

return 0;

}

(编辑:源码网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章