首页 > 编程知识 正文

c语言char数组初始化为0,c语言scanf输入数组

时间:2023-05-06 15:26:21 阅读:168075 作者:3386

明明是简单的一行代码,为什么会报告错误呢?

如果结构体中没有就没有问题

这是错误消息

解决方案

5

简单来说,就是不允许。

复杂地说,那是推测:

不在结构中时,无论是局部变量还是全局变量,编译器都必须立即给他分配空间。 分配空格后,如果明确知道该变量的位置,也可以顺便清除0。

在结构体中,只宣言了一个类型,即使想清除0也不知道该去哪里。 当然,也可以说在真正定义变量时清除0。 它类似于c构造函数的概念。 C大概不行吧

1

5

在c语言中不允许这样做,在结构体内部和外部分配值是完全不同的概念

在外部被定义的,无论是局部变量还是全局变量,都被分配了内存,初始化就是对该内存进行初始化

另一方面,因为结构本身的定义不分配内存,只在定义结构变量时分配内存,所以甜海燕的初始化语句在编译结构定义时不起作用,而在结构中定义变量时起作用,所以c不是那么“自然”

c首先用构造函数的方法说明了折衷方法,但也不允许直接初始化,只需一个函数就可以完成必要的初始化任务。 理由相同,是为了避免编写的代码和基本操作“不协调”

之后,来到C 11,也许是为了程序员的方便,标准也支持这样的类内直接初始化

顺便说一下,支持Java,c也不是没有“模仿”Java的可能性

5

每种语言都有他的哲学,也有一些库,比如STL

并根据版本的不同不断修改和完善

早期,c语言的哲学是尽可能简单,接近硬件,接近汇编

包括所写的句子和语言内核本身

当时c是关键词最少的语言

当时,人们提倡代码要短,标识符的名称要尽可能短。 (啊,那个时代,编程语言只能识别8个字符。

从C标准库中可以看到这一点

当然。 编译器也必须尽可能简单地实现

当时,自动数组无法初始化

结构中的数组。 当然也不能初始化

2

支持C 11编译器。 例如VS2015

否则,本人可以用构造函数初始化为0

3

难道可以给那个top赋值吗?

不能。

你定义了类型,而不是定义了变量。

但是最新的c就可以了。

如果没有注明CodeBye版权所有者,全部原创本网站以BY-NC-SA协议许可。 请注明将结构体中的字符数组初始化为0的问题。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。