当前位置:首页 » 编程软件 » 编译器改变量

编译器改变量

发布时间: 2022-04-16 18:22:32

1. 有没有一种编译器在定义了一个局部变量之后,未对它初始化后,系统自动置为0

这样做的好处是什么呢?一般软件工程的建议是:即使有这样的缺省选项,也要当作它没有,因为你无法控制编译器不改变这种缺省行为。所有变量都要初始化后使用

2. Eclipse中 更改变量快捷键

CTRL+1可以在一地方更改影响到全局。就是说,你改这一个地方,其他地方都改了。改方法是ALT+SHIFT+C.
Seaech视图可以改吧,我使用的是默认的。感觉默认的还不错呀,为什么要换呢?

3. C++为什么引用不能修改变量的值的呢

常量引用语义上无法修改变量值
引用分为常量引用和变量引用
常量引用主要是针对对象的,避免在栈上重新构造对象,同时避免对象在使用过程中被修改
变量引用主要是针对传值参数的,这些参数可能在函数执行过程中需要变更参数值
针对常量引用的修改值仅限于语义,可以使用强制类型转换去除该限制。但是这个方法并不推荐,很容易引起歧义!

4. 怎么从单片机外部改变单片机中程序的变量

直接修改程序中的变量,危险性很大呢,要是改错了字节让指令变成非法的,那程序就乱套了。最好是把那些变量分离出来单独放在一个地方,比如24C02存储器,这样修改方便。

5. 编译系统(如:VC++6.0)编译时对变量和变量地址如何处理

int a =5;//定义一个变量,并初始化
int *p //定义一指针变量
p = &a; //把a的地址赋给指针变量p

int &a = b;//a是b的引用。也就是b的一个别名。只要改变a的值,b的值也就改变了

6. c语言中无论怎么改编译器都说你的变量无用是怎么回事

因为你的b就是没用到啊.
正确应该在结尾return b;
你现在是固定return 0的.

所以 不管输入什么 都不会有什么输出

7. c# vs编译器如何改写一个变量名让所有这个变量名都改变

方法1,在student的定义处修改变量名为你的新变量名,改好后光标处会有红色的提示,点击这个提示就可以修改原先命名为student的变量为你新命名的变量。
方法2
,按ctrl+F,弹出查找/替换窗口,输入student替换为新变量名。

8. 编程中的变量与常量

看完要加分啊.

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

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

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定义的常量.这种常量一般是为了防止程序员误修改不能被修改的值.特别是一个人写的程序给另外一个人用时, 比如一个字符串, 或一个类的成员.

9. 在c语言中,程序运行期间,其值可以改变的量叫做()

在c语言中,程序运行期间,其值可以改变的量叫做变量。

当在窗体中设计用户界面时,c语言会自动为产生的对象(包括窗体本身)创建一组变量,即属性变量,并为每个变量设置其缺省值。这类变量可供用户直接使用,比如引用它或给它赋新值。用户也可以创建自己的变量,以便存放程序执行过程中的临时数据或结果数据等等。

(9)编译器改变量扩展阅读:

变量的作用域由声明它的位置决定。如果在过程中声明变量,则只有该过程中的代码可以访问或更改变量值,此时变量具有局部作用域并被称为过程级变量。如果在过程之外声明变量,则该变量可以被Script中所有过程所识别,称为Script级变量,具有Script级作用域。

变量可以保存程序运行时用户输入的数据、特定运算的结果以及要在窗体上显示的一段数据等。变量声明后没有赋值的话,编译器会自动提示并赋予默认值。

10. 在C语言中用const定义的变量如何修改

关于C的关键字——const的理解和用法

const在C中的用法很灵活(相信C++中也一样),个人感觉对之既爱又恨,有时候感觉const很好用,同时又经

常会因为它的优点而犯错,犯错的原因除了粗心之外,另一个更重要的,就是以前对const理解不到位。于是今天

自己写成一篇小总结。如果是初学者,建议好好看一下,相信帮助比较大;如果是高手,请不吝赐教!

上面写了一段废话,就算是小序吧:)接下来就是正文;

一、关于const的具体定义:

——个人感觉很难对它下一个标准的定义,因为的用法很灵活,似乎对它定义后总无法让人能够明白它的

意思,而且容易让人产生误解(也许是偶水平太菜了)。例如,把它有定义:一个能够让变量变成无法修改的常量

的关键字。那么,这样的话,就可能让人误解为只要有const在定义变量里面,那变量就无论怎样都无法修改。这

样的理解是很片面的(下面用法方面将对这问题做探讨)。因此,本人在此不敢对它下定义,其他参考书好象也没

有下定义。

二、关于const的具体作用
——const作用就灵活了,一个表达式中const放置的位置不同,效果可能就不一样了。下面分具体情况分

析(当然,所举的情况并非覆盖全部情况)
A。const最经常的用法
1.为了防止传递的函数参数不被修改,在调用函数的形参中用const关键字.
//Example ->

int FindNum(const int array[], int num, int conut);//声明函数

//code...

int FindNum(const int array[], int num, int count)
{
int i;
int flag = 1;

for (i = 0; (i < count) && flag; i++)
{
if (array[i] == num)
{
flag = 0;
break;
}
}
return flag;
}
//code...

上面这例子中,编译器会把array[]当作常量数据的数组看待。所以,假如你不小心给数组赋值,那么

,编译器就会报错了。因此,当你不需要也不想修改数组的数据时,最好用const把数组定义为常量数组。

2.const可以用来创建数组常量、指针常量、指向常量的指针等:
const char ch = 'a';
const int a[5] = {1, 2, 3, 4, 5};
const int *p = a; //a是一个数组的首地址.p是指向常量的指针
int * const p = a; //a是一个数组的首地址.p是指针常量;
const int * const p = a; //a是一个数组的首地址。p是指向常量的指针常量

前两种情况很简单,现在着重分析一下后三种用法,因为这3种情况容易出错,偶就有时候怕用错了

刚脆不用const.

——const int *p = a; //p是指向常量的指针,因此,不可以通过给指针赋值来改变数组

//中的数据,例如:
// *p = 10; /*错误*/
// *(p + 2) = 1; /*错误*/

//假如指向常量指针可以改变值,那么,就等于也改变了数组的数

//据了。假如你不理解,偶倒有一个办法让你理解,你就想你和一

//个人绑在一起,有可能你移动了位置而他不跟着你移动吗!哈哈

——int * const p = a; //看这表达式,const的位置和第一个不同吧!他们的用法和作用

//就完全不一样了。这时候p是指针常量,我们知道,指针是指向

//了一个数组的首地址,那么,它的位置就不可以改变了。但是你

//现在应该和第一个表达式比较了,现在的数组并不是常量数组,

//所以数组的数据是可以改变的,而指针这时候它是不可以移动的

//,指向数组第一个数据,所以它可以而且只可以改变数组第一个

//数据的值。这一点请别误解,指针常量只是它的地址不可以改变

//,并不是它指向的内容一定不可以改变,这一点切记!

//好啦。假如你又不理解,偶又有一个比较形象的例子来说明:

//假如有一个固定的人拉着另外一个人的手,注意,固定的人相当

//于他是不可以由其他人来替换的。但是他可以拉其他人的手啊,

//并不一定规定他必须拉同一个人的手啊。现在你应该可以有个比

//较深的印象和理解吧:P

//下面举几个例子帮助理解:
// *p = 2; /*可以*/
// *(p+1) = 10; /*可以*/
// p++; /*不可以*/

——const int * const p = a; //假如前面两种表达式的本质你理解了,这种表达式你来理解根本

//没有问题,const现在有两个,而且一个const的位置是第一种情

//况的位置,第二个const是第二种情况的位置,所以这表达式的功

//能就是前两种情况的作用总合。这里不多说!

//下面举几个例子帮助理解:
// *p = 2; /*不可以*/
// *(p + 2) = 10; /*不可以*/
// p++; /*不可以*/

B。const并不会阻止参数的修改

之所以把这作为一点来谈,就是因为有一些朋友可能会以为在函数参数中用了const就一定不可以改变

参数,这实际上是错误的理解,因为,它并不阻止参数的修改,下面举个简单的例子来阐述一下;

#include<stdio.h>
#include<ctype.h>

void ChangeStr(const char *String);

int main(void)
{
char str[] = "The C programme";

Change(str);
printf(str);

system("Pause");
return 0;
}

void ChangeStr(const char *String)
{
char *Source = (char *)String;

while (*Source)
{
*Source = toupper(*Source);
Source++;
}
}

//end

上面的程序把字符串中的每个字符都转换成大写字母了。因为*String把地址给了*Source,而

*Source的值的改变编译器并不干涉,可能有的编译器会发出警告之类。上面的程序只是为了说明const并不会阻止

参数的修改,如果象上面程序那样,个人感觉没什么意义,只会让人容易混乱而已。

关于CONST的用法和理解本人也就只能说这么多了,当然,很可能有更多高级或者少用的用法,由于水平

和经验有限,确实不能再说些什么。

三、参考文献
——《C primer plus 5th》

热点内容
如何找缓存 发布:2024-04-28 01:24:04 浏览:947
苹果手机资料怎么传送到安卓手机 发布:2024-04-28 01:18:35 浏览:468
数据库泄漏 发布:2024-04-28 01:18:26 浏览:42
安卓去哪里下载铃声好 发布:2024-04-28 01:18:21 浏览:403
录制服务器怎么样 发布:2024-04-28 01:13:16 浏览:463
提示mysql存储过程不存在 发布:2024-04-28 00:52:35 浏览:312
绝地求生如何增加人机配置 发布:2024-04-28 00:42:55 浏览:315
思科怎么配置主机数量 发布:2024-04-28 00:41:58 浏览:823
java进制运算 发布:2024-04-28 00:33:58 浏览:284
编译原理什么内容 发布:2024-04-28 00:01:33 浏览:478