程序的变量与常量

程序的变量与常量,第1张

变量:代表内存中具有袜袜特定属性的一个储存单元,它猜正用来存放数据,也就是变量的值,在程序运行期间,这些值是可以改变的。

常量:在程序运行期间,其值不能改变的量。

变量与常量都需要内存去储存,本质就是变与不变罢了。

例如:用C语言编写程序求圆的面积S=2*π*r*r(π为圆周率)。

有常穗好悔量:2,π

有变量S,r

#请回答,你的年度知识点#

在C语言中,常量和变量都是可以用来存储和表示数据的,常量值渗塌在程序执行的过程中是不可变的,而变量是可变的

1,常量的概丛渣圆念

常量是不可变的量,C语言中数值可以用常量表示,常量可以表示各种数据类型的值

2,变量的概念

变量和常量是相对的,变量在程序执行过程中是可变的量,由变量名和变量值组成,变量名是一个标识,变量值是一个数据值,程序为每个变量开辟了存储空间,变量值就存储在这个空间当中,可以通过变量名访问这个空间。

3,初始化和赋值的概念和异同

4,变量定义完成的两个功能

第一个功能是为编译期服务的,第二个功能是在运行期完成的

6,extern语句的作用是,告诉语句改变量是在改程序的其他语句中初始化完成定义梁烂的

7,“&”用来获取变量的地址,“”用来获取地址上的内容,“&”是地址 *** 作符,“”是指针 *** 作符

看完要加分啊.

其实常量有几种, 因为他们的值不能被改变而都叫常量, 但他们是有很大区别的, 因为他们的作用完全不一样.

至于他们的本质区别分几情况.平常定义的变量一般是放在栈或静态区上, 也就是你说的内存中的一个特定的存储区桐配扒域.

1.宏定义的"常量".就是你的程序里的

#define P 3.14

这个不是跟平常的变量一起存放在栈上, 这个是一个宏, 编译器编译前会将你的代码中所有的P替换为3.14, 所以你的程序在运行时是没有地方存放P这个常量的, 而3.14会跟你的其他可执行代码一起放在内存当中.所以宏定义的"常量"可以说不算一个量了.

2.C++的const定义的"常量", 例如

const int a = 2

这个a是跟平常的变量一样放在栈上, 只不过编译器在编译时会加一个安全检查, 如果你的代码有显式修改a的地方, 就会报一个编译错误. 但是你还是可以在运行时通过其他方式修改a的值.所以const定义的量跟平常的变量没有什么区别.

3.字符串常量

char* p = "text"

p确实是一个变量, 但其指向的"text"即不放在栈上也不放在代码里,它放在一个专门的静态区域, 如果你修改它的值(不是修改p的值), 会造成内存错误. 所以字符串常量又跟上面两种不一样.

比如下面的程序:

#define P 3.14

main()

{

char* s = "text"

const double a = P

}

它的卖袭内存分布如下:

*******************************

| 静态存储区 |

| "text" |

*******************************

| 栈 |

| s a |

*******************************

| 代码域 |

| char* s = ...|

| const double a = 3.14|

*******************************

============================================================

这正好就是你说的时间的区别, 但注意不是"运行的时间", 而是他作为"常量"的时间. 从源代码到可执行程序的过程中, #define的常量是在编译前所进行的处理中作为常量(也就是预处理), const是在编译当中作为常量, 而字符串常量则是在运行时无法修改了.

------------------------------------------------------------

至于你说的常量没用是不正确的.我只说上面前两种"常量".

1.#define宏定义的"常量".在多文件的情况下, 普通的变量在第一个文件中定义后又要在其他文件中重新声明, 显然没有宏方便.而且如果用变量的话在它的所有有效区都可以被修改, 肯定是不安全的.另外宏也更直观, 比变量更容易维护.

2.const定义的常量.这种常量一般是为了防止程序员局昌误修改不能被修改的值.特别是一个人写的程序给另外一个人用时, 比如一个字符串, 或一个类的成员.


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12255466.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存