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...