當前位置:首頁 » 編程軟體 » 編譯器改變數

編譯器改變數

發布時間: 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-03-29 08:22:51 瀏覽:630
python和excel 發布:2024-03-29 07:47:03 瀏覽:860
postfix源碼下載 發布:2024-03-29 07:42:03 瀏覽:142
怎麼在電腦上玩手機伺服器 發布:2024-03-29 07:30:13 瀏覽:141
倍福加密 發布:2024-03-29 07:24:42 瀏覽:844
如何用密碼鎖住並隱藏工作表 發布:2024-03-29 07:03:28 瀏覽:327
按鍵精靈滑鼠腳本 發布:2024-03-29 06:47:41 瀏覽:20
pythonhome 發布:2024-03-29 06:47:36 瀏覽:170
dns配置錯誤怎麼修理 發布:2024-03-29 06:36:15 瀏覽:981
電信客戶6位密碼是什麼 發布:2024-03-29 06:35:42 瀏覽:566