变量定义如何降重
2022-04-19阅读(713)
问:什么是变量定义和变量声明
- 答:变量定义:定义合法类型、长度的值给变量,即赋值
变量声明:就是告诉编译器在程序中使用了哪些变量,及这些变量的数据类型以及变量的长度,然后为变量分配存储空间。 - 答:变量使用之前要声明。声明变量实际上就是给他分配一个存储空间。比如,int a,a未必要赋值
变量定义就是给变量赋值了。根据程序语言的规定,定义一个合法的值给变量。 - 答:声明是仅仅告诉编译器,有个某类型的变量会被使用,但是编译器并不会为它分配任何内存。而定义就是分配了内存。
文库对变量定义和变量声明的解释:
问:关于变量定义的问题
- 答:得到的值是12而不是23
(因为变量名为a,不是b)
那么系统是怎么知道我要输出的12 而不是23
(依靠变量名来判断)
对于字符a 和b是否又有一个存储地址呢?
(变量名不同当然不在一个存储地址,即使变量名相同,而且又重新定义了,但在不同的定义域里,那么他们的存储地址也是不一样的)
变量名是不存储的,存储的是变量的值,变量名是指向变量地址的。
比如int a,就是定义一个整形数据,并且给出了a所占的内存空间,但它的初始值可能不确定(c语言中好像是0,其他语言可能是任意数)。 - 答:首先,cout<<a;这个语句就是要输出a的值,而不是b的值。其次 int a=12,b=23;这句话就是定义了一个 int类型的变量名a,b,变量名其实就是对应一个名字,代表了一个地址。引用的时候就引用变量的名字即a,b,即可。呵呵,你是这个意思吧...
问:什么是变量,自变量和因变量是如何定义的
- 答:自变量就是x的取值,因变量就是因为x的变化才变化,也就是y的取值,可以这么想
问:如何定义变量
- 答:变量意味着向编译器描述变量的类型,但并不为变量分配存储空间。定义一个变量意味着在声明变量的同时还要为变量分配存储空间。在定义一个变量的同时还可以对变量进行初始化。
局部变量通常只定义不声明,而全局变量多在源文件中定义,在头文件中声明。
局部变量
在一个函数的内部定义的变量是内部变量,它只在本函数范围内有效。
自动变量auto
函数中的局部变量,其缺省格式是自动变量类型。例如,在函数体中int b, c=3; 和auto int b, c=3; 是等价的。
自动变量是动态分配存储空间的,函数结束后就释放。自动变量如不赋初值,则它的值是一个不确定的值。
问:在C语言中用const定义的变量如何修改
- 答:首先是处理时间上的不同,#define宏是预处理命令,是在编译前的预处理阶段完成的。而const是在编译阶段完成的。然后是效果上的不同,const会进行严格的类型检查,而#define宏则只是简单的替换,不会进行类型检查。再就是功能上的不同,const一般用来定义文字常量,其功能相对单薄,而#define由于其简便性,可以在许多方面达到意想不到的效果,比如mfc中用到了许多宏完成了复杂的rtti机制,序列化机制,等等。而这些都是const无法达到的效果的。另外#define宏用得比较多的地方就是防止头文件的重复包含了。这一点也是const无法做到的。
- 答:指针
两种修改方法
1: int const *pci
指针指向的对象被const成常量,指针本身是整型,可以修改,但不能修改指针指向对象的值。
2: int * const pci
第二种则是这个指针本身被const成常量,指针不能修改,可修改指向的整型。
参考书籍《C和指针》,最好三剑客的书都敲一遍,然后你就悟了... - 答:const定义的是常量,运行中不能改,再间接的方式也不能改,这不符合规定。
想改的话就不要定义成const常量
“我指的是如何用一种间接的方式使得用const定义的变量在程序运行中可以被修改”,不知道你用的是何种间接的方式,贴出来分离一下??