C语言和Java的区别和相同点

0:标识符:java 中可以有美元符号,c不可以
1:true 和false 不是c语言的关键字
2: c语言的类型列表:
0:基本类型(6种):数值类型(整形(short,int,long(没有byte)),浮点型(float,double)),字符型 char,(没有boolean型)
c语言允许用数值来标识逻辑值,用0标识false,用非0标识true;Java中是不允许的,java 直接使用boolean 的true和false 值来标识
1:构造类型(4种):数组,结构体struct,公用体union,枚举类型enum,
2:指针类型
3:空类型void

3:在c 语言里面short,long,signed,unsigned 其实是整形的修饰类型,
例如short int标识短整形,一般写为short
long int 标识长整形,一般写为long


4:c语言里面
int result = !(a>b);//a>b为假所以等于0,!0就等于1 


//if(表达式,关系表达式,逻辑表达式,常量,变量)语句:
//表达式为真(非0)执行语句,否则不执行
//java  里面只能是关系表达式和boolean 类型的变量

5:函数的调用的参数的传递


6:返回值的规定:(前面的两条和java 不一样,java 是可以返回数组的,没有忽略返回值一说)
a:函数不能返回数组
b:如果忽略返回值,假定返回int
c:void 标识没有返回值


7:简单的来说C语言的数组就是一旦定义不可修改,定义的时候长度就固定了。
PS:java 里面的定义是这样的,不可以定义的时候是不可以制定长度的,必须是在分配的时候才可以的。


//数组的初始化:JAVA 是不支持的,因为不可以在声明的时候制定长度
int a[5]={1,2,3,4,5};
//下面的这种定义也是可以,部分初始化,JAVA 是不支持的,因为java 是在初始化的时候才知道长度的
int b[5]={1,2,3};
//如果为全部元素初始化,可以省略长度,其实这种就是Java 的用法,java 也是可以这么声明和初始化的int[] args,int args[]
int x[]={1,2,3};

8://C语言计算一个数组的字节长度可以直接通过sizeof,如果是数组的长度呢,需要用字节长度除以该数组的类型字节长度
//java里面只要一个b.length的属性就可以了。
int sizeb = sizeof(b);
printf("b数组字节长度=%d\n",sizeb);

printf("size of int =%ld\n",sizeof(int));

printf("b数组的长度为%d\n",sizeb/sizeof(int));

9:网购的地址,通过这个地址找到你,
程序的地址,通过地址来操作变量,这个地址有一个叫法叫做指针,java 里面把地址就叫做引用
指针是有类型的,就是指针类型,JAVA中的地址叫做引用,类型叫做引用类型


10:相同点:
c语言是至传递,在函数调用时候不会改变外部变量的值,这有时候会给程序带来困难,
使用指针可以做到这一点,就是改变外部变脸给的值。这个和JAVA的引用变量是一个的


11: 字符串,java 中是申明了就不能修改了,如果要修改就是StringBuffer
c语言中,都是通过string.h 里面的方法来操作的


12: 结构类型-标示,就有点像是java中的class
public Class Person{
int pid;
String name;
int age;
}
使用的时候Person p1;


//2.结构类型-结构标示
struct Person{
    int pid;
    char name[10];
    int age;
};//注意这了是有;的符号的
使用的时候struct Person p1;


struct Person{
    int pid;
    char name[10];
    int age;
}p2,p3={1,"hello",3};//注意这了是有;的符号的,而且可以在这里进行初始化和申明


//3:改进,成为结构类型定义,通过类型定义的方式,实现和java非常类似的
    
    typedef int BOOL; //这样bool 就代表int类型了
    typedef struct{
        int pid;
        char name[10];
        int age;
    } Customer;
    
    Customer c1;
    c1.pid = 9;
    strcpy(c1.name,"customer");
    c1.age=9;
    
    printf("pid=%d,name=%s,age=%d\n",c1.pid,c1.name,c1.age);
    
结构变量,结构类型标示,结构类型定义的区别
+++++++++++++++++++++++++
0:结构变量,每次用的时候都需要重新定义一遍。
//复合类型,结构变量的声明
    struct{
        int pid;
        char name[10];
        int age;
    } p1,p2;


++++++++++++++++++++++++++
1:结构标示,就是给结构起一个名字,
//2.结构类型-结构标示
struct Person{
    int pid;
    char name[10];
    int age;
};//注意这了是有;的符号的
使用的时候struct Person p1;




struct Person{
    int pid;
    char name[10];
    int age;
}p2,p3={1,"hello",3};//注意这了是有;的符号的,而且可以在这里进行初始化和申明




+++++++++++++++++++++++++
2:然后觉得可能还不是很好,那么就结构类型定义,就像java一样的使用了
typedef struct{
        int pid;
        char name[10];
        int age;
    } Customer;
    
    Customer c1;




+++++++++++++++++++++++++++
    







  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值