C语言是不是只能使用数据类型的关键字来定义变量?为什么?

星沉大海3


c语言大部分时候,只能用数据类型关键字来定义变量,如:int,long int,double void等。但很多时候也可用其它类型关键字,举例如下:

如:

const char cosin=1;它表示cosin值在程序中只能引用,不能改变,在程序中经常用到。

简化,把char取掉,写成:

const cosin=1;

编绎也是正确的,执行也没问题。

这说明不用数据类型char也是可以的。

同理,const cosin=0.5498654;

也同样执行过确。

2,sizeof:计算数据类型长度

如:

return(sizeif(a));

返回类型可以是int,也可以是其它。

3,typedef:

typedef struct

{

int a;

bool c;

}astruct

那么,在别的地方可直接这样定义一个结构:

astruct struct1;

4,extern

函数asint()

在另外一个文件中

extern asint()

总结:关键字很多,用在专用场合。


beijingwanger


我作为一个学过多种编程语言的人,我来回答下这个问题吧。

与python比较

C语言只能使用数据类型的关键字来定义变量,这个主要和变成语言的设计有关,每个语言的编译器、解释器是不同的,如果不加关键字,编译器、解释器是无法识别的。比如python语言是一中更加简洁的语言,这一种语言它的编译器、解释器会自动识别类型,所以不需要。

需要类型的原因

但是C语言在设计的时候并没有自动识别的功能,所以需要我们加关键字进行有效的区别。因为:

1,编译器需要知道变量需要多大的内存空间;
2,编译器需要知道如何访问变量。

C中定义数据类型是为了容易编程,定义了数据类型之后又定义了数据类型之间的各种运算,这样对编程人来说就会方便很多,如果不定义数据类型,那么数据之间的差别只有位不同而已,这样如果要定义一个字符变量,你首先要去申请一个8位的内存,再去按ASCII码对其进行赋值,这样对编程人员来说是很恐怖的。

附录

另,转述下 Edwin Brady 在《Type-driven Development with Idris》中的说法,类型有以下几个重要角色:

  1. 对机器而言,类型描述了内存中的电荷是怎么解释的。
  1. 对编译器或者解释器而言,类型可以协助确保上面那些电荷、字节在程序的运行中始终如一地被理解。
  1. 对程序员而言,类型可以帮助他们命名、组织概念,帮助编纂文档,支持交互式编辑环境等。

希望对你有帮助,欢迎讨论留言!


皇德华叫兽


是的,任何变量都需要有一个明确的类型,原因如下:

1,编译器需要知道变量需要多大的内存空间;

2,编译器需要知道如何访问变量,如支持什么样的操作符等。

当然在 C 里面你可以给已有的类型定义别名,如:

typedef int 整数;

整数 i = 123;

别名可以是任何符合C语法规范的名字。

也可以给用于自定义类型命名,如:

typedef struct tagStudent

{

int id;

char* name;

} Student;

这里定义了一个结构体 ,并定义了一个别名。


分享到:


相關文章: