找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2562|回复: 10
打印 上一主题 下一主题
收起左侧

为什么变量赋值必须写在函数里。

[复制链接]
跳转到指定楼层
楼主
为什么

51hei图片_20230114092627.png (10.96 KB, 下载次数: 65)

51hei图片_20230114092627.png

51hei图片_20230114092619.png (14.03 KB, 下载次数: 76)

51hei图片_20230114092619.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1034262 发表于 2023-1-14 12:49 | 只看该作者
不一定,函数外定义变量时可以同时赋值。
回复

使用道具 举报

板凳
ID:629502 发表于 2023-1-14 14:23 | 只看该作者
要是想在函数外赋值,要定义变量的时候进行初始化赋值,C语言本身就不允许你这种操作
回复

使用道具 举报

地板
ID:1061165 发表于 2023-1-14 15:12 | 只看该作者
变量赋值不一定要在函数中进行,如果在函数外赋值必须要在定义变量的时候同时赋值,也就说定义与赋值要合成一条语句。因为程序是在main函数顺序开始,需要哪个函数就会执行该函数,需要哪个变量就调用那个变量,若在本帖中图2所示中打印c2[0].b并不会得到22的值,因为在编译器看来你只是声明了该变量未对其赋值,因为程序没有执行赋值那条语句。
回复

使用道具 举报

5#
ID:155507 发表于 2023-1-15 08:37 | 只看该作者
函数外定义变量时可以同时赋值。
要是想在函数外赋值,要定义变量的时候进行初始化赋值


回复

使用道具 举报

6#
ID:277550 发表于 2023-1-15 09:18 | 只看该作者

面向函数的语言,所有语句,必须在函数内。
回复

使用道具 举报

7#
ID:76471 发表于 2023-1-15 11:08 | 只看该作者
写在函数外是全局变量,用完后不释放RAM,写在函数内是局部变量,退出函数就释放RAM,如果MCU的RAM不多,如只有128个字节,如果你定义的全局变量超过128字节,你的程序运行会出错。
回复

使用道具 举报

8#
ID:1061238 发表于 2023-1-15 18:00 来自触屏版 | 只看该作者
定义时初始赋值,重新赋值必须在函数内发生了运算,既定规则,没有道理可言
回复

使用道具 举报

9#
ID:624769 发表于 2023-1-15 21:40 来自触屏版 | 只看该作者
所谓的函数外赋值,还是在函数内,无非在一个隐藏的函数,并被startup调用后赋值,从效率来讲,还不如在main函数赋值来的快。你仿真一下,看看哪个快就知道了。
回复

使用道具 举报

10#
ID:1059989 发表于 2023-1-18 11:24 | 只看该作者
因为c语言是基于函数的 ,只有函数里的代码才能被正常调用执行,在函数外的代码,如非特殊处理是没有机制去执行的(startup调用main是特例)。所以函数外只能定义变量,定义时可以赋初值,但不能单纯地赋值。
回复

使用道具 举报

11#
ID:1061377 发表于 2023-1-18 16:56 | 只看该作者
来学习,结构体的赋值,不是非常懂,但没在外面赋值过。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表