C語言中定義變數a,其地址還會不會變了?像a b,意思是值變了,地址沒變?那怎麼變化a的地址

2021-05-29 15:35:08 字數 3537 閱讀 1821

1樓:匿名使用者

不會,a=b的意思是把b賦值給a,舉個例子就是a=1的意思就是把1這個值賦予給a,1的值既不會變化也不會改變地址。想要變化a的地址應該用指標變數吧,a=&b這種。

c語言中,一個變數的值進行減運算後,這個值的記憶體地址也變化了。是嗎?

2樓:su9_踏雪無痕

記憶體地址是不會發生變化的,只是儲存在這塊內從中的值發生了改變。如果想讓記憶體地址發生變化需要對記憶體進行操作。

例如:cha a[8] = "abcde";

char *p;

p = a; //指標p指向陣列a的首地址p++; //此時用p對a的記憶體進行操作,每相加一下記憶體向後移1個byte。p指向的地址變了

,但 是 a的地址照樣沒有變

3樓:匿名使用者

不變c語言中,對變數的值進行運算,變數在記憶體的地址不會改變,改變的是地址對應該的資料。

4樓:匿名使用者

不變,只是變數記憶體中所存的內容改變,減運算後的結果(值)仍然存在原地址中。。。

5樓:匿名使用者

沒有啦,取出記憶體地址中的變數進行減運算後又把值存放到記憶體地址中。

6樓:匿名使用者

沒有變,你是不是看到的是指標。比如

int*ptr,a[10];

ptr =a;

ptr++;

這個ptr的值會變

c語言,在迴圈中定義一個變數的地址分配問題

7樓:匿名使用者

1、理論上是不一樣的bai。但是在實du際中,如果僅僅是進行這zhi樣的迴圈,那麼地址dao是不變的,這回是因為剛剛i被分配

答的地址釋放後沒被其他量佔據,所以再分配的時候還是在原來的地方進行。

2、可以寫個程式來檢測下,檢測的方法自然是單步執行,檢視a的地址比如下面的程式,可以檢視&a和p的值,會發現&a的值不會變,而p的值由一個系統給它分配的地址變為a的地址之後就不會再變,它的值和&a的值始終一樣且不變。

8樓:匿名使用者

是一樣抄的,你可以寫個程式來檢測下,檢測的方法自然是單步執行,檢視a的地址比如下面的程式,你就可以檢視&a和p的值,你會發現&a的值不會變,而p的值由一個系統給它分配的地址變為a的地址之後就不會再變,它的值和&a的值始終一樣且不變

#includevoid main()}

9樓:匿名使用者

理論上是不一樣的

但是在實際中,如果僅僅是進行這樣的迴圈,那麼地址是不變的,這是因為剛剛i被分配的地址釋放後沒被其他量佔據,所以再分配的時候還是在原來的地方進行。

10樓:匿名使用者

我個人覺得不一樣吧,每次不可能都分配到那塊記憶體吧。除非你用了指標。

c語言中,如果定義一個變數,但不對其進行賦值,那麼輸出的這個變數的值由什麼決定呢?

11樓:念憶

因為字元變數在記憶體中存放的是其對應的ascii值,比如說字元『a』ascii值是97。

printf("%d",ch);

char ch='a';

輸出結果就是97了。所以對於字元變數也可以這樣理解:是單位元組的整型變數。所以當然可以對一個字元變數賦值一個1啊。

在表示式方面較其它程式語言更為簡潔,如自加、自減、逗號運算和三目運算使表示式更為簡單,但初學者往往會覺的這種表示式難讀,關鍵原因就是對運算子和運算順序理解不透不全。

12樓:

作業系統**記憶體單元后並不會清除其內容,當程式執行時需要為變數分配空間時就從這些**的單元中分配,因此變數不賦初值,其值是不確定的。在不同的時刻執行,輸出不同;在不同的機器上執行,輸出也會不同。

13樓:匿名使用者

當這個程式執行時,他會給a和b各分配一個記憶體單元,由於你未對啊a,b初始化或賦值就直接輸出,此時a的值就是a所在的記憶體值,由於程式每次分配的記憶體單元都是隨機的,所以每次輸出的值也都是隨機的,即值是不確定的。

14樓:echoの忽忽

樓主定義了整型變數a,系統就會為它在記憶體中分配一個空間,就相當於你拿到了一個盒子,但是你沒有對這個變數賦值,所以這個盒子是空的,至於輸出的數值其實是沒有實際意義的。

15樓:善·化

如果你不給變數賦值直接輸出的話,變數中的值是隨機的,與你使用的編譯系統和機器有關,沒什麼實際意義。

16樓:

其實這涉及到計算機的儲存機制 首先你必須明白計算機儲存介質上並不是清白的 相反是存放了很多以前運算的無用資料的 當你寫了int a的時候 系統就把這片無用資料的空間給了a存放數值 如果你賦初值的話 他就可以把原始的無用資料的值覆蓋掉 但是你沒有 所以就是隨機的無用資料值 。但是聽說一些高階 最新版的編譯器可以自動把儲存空間清零的。

17樓:匿名使用者

因為你沒有對其進行初始化,所以他的值是一個隨機量。沒有什麼意義。

在c語言中。b=1,然後把b的值賦值給a ,那麼b的值還是1麼?或者說b就沒了?求解。。。。。謝謝!

18樓:

b 的值還是1,除非被賦新的值,或者出了b的宣告有效區域

19樓:匿名使用者

你好!來你這個是讓我

源寫一段程式呢,還是怎麼樣bai的。那我就du寫一個區域性的吧。zhidaob=1;

a=b;

b=1;

我的理解b就是等於1,因為b的值沒有發生改變,如果真的要發生改變就應該這樣:

b=1;

a=b;

b=b+a;

b=2;

這樣我的理解b就是2了,這樣你理解了吧,讀最後值就行了。

希望我這樣的回答能讓你滿意!

20樓:匿名使用者

c語言中。 幾個基本數bai據型別du(int ,char, float,double... )的賦值

都是值復zhi制

比如你先在說的b=1 那麼系dao統就在記憶體中宣告一版個整型權的記憶體地址,命名為b 這個地址裡面儲存1個值:1 。 這時令a=b; 則同樣開闢一個記憶體,命名為a 這時把b的值即1 複製一份儲存到a記憶體中

21樓:喝牛奶的熊

申請的區域性變數都在堆疊中,賦值給b,然後b再賦值給a,那麼a和b都是1。只要在b的生存週期內,b都存在,可以直接使用。

22樓:神龍見尾不見

b 的值還是1,

如果在這期間沒有給b重新賦值,那麼他的值就不變

23樓:吳唯寒萱

簡單的copy說 b的值不會變的,除非 有新值賦予給它!一旦覆蓋就會變。

你說的那種情況會出現在連結串列中,一旦斷鏈不僅是b 而且b後面的都會沒有(前提是連結串列後面還有的話)因為他們的儲存不是連續的空間。不是值消失了 ,而是散落在儲存空間找不到了

c語言中怎麼樣定義字串變數c語言中怎麼樣定義一個字串變數

c語言沒有字串型別,所以沒辦法進行定義字串變數。但是可以用字元陣列來處理字串。這定義了一個字元陣列,名為a 例 char a hello 也可以用來定義一個指標變數 定義了一個指標變數,名為p 例 char p hello 接觸c語言幾天。查了一些資料是這樣理解的,有不對的地方一起學習啦。一維的情況...

c語言中define巨集定義和變數定義的聯絡和區別

巨集定義是全域性性的,變數定義是區域性性的,巨集定義主要在預處理階段完成,由前處理器進行字元替換,變數定義則會在記憶體中為變數分配地址。define巨集定義的量是做常量處理的,如 define price 30,下文只要遇到price就代表常量30,他與變數的區別之一是在書出語句中printf d ...

在c語言中定義了字元變數給他賦值

因為字元變數在記憶體中存放的是其對應的ascii值,比如說字元 a 它的ascii值是97。char ch a printf d ch 輸出版結果就是97了。所以權對於字元變數你也可以這樣理解 它是單位元組的整型變數。所以當然可以對一個字元變數賦值一個1啊。有一個東西叫ascll碼。bai 就是說d...