我試圖改變某個變量的使用函數的地址,但我不知道這樣做的方法。不過這是我去:如何用函數更改變量的地址?
void address (int* x, int* y)
{
x = y;
}
int main(void)
{
int x = 2;
int y = 4;
address(&x, &y);
printf("%d", x);
return 0;
}
我試圖改變某個變量的使用函數的地址,但我不知道這樣做的方法。不過這是我去:如何用函數更改變量的地址?
void address (int* x, int* y)
{
x = y;
}
int main(void)
{
int x = 2;
int y = 4;
address(&x, &y);
printf("%d", x);
return 0;
}
我懷疑你想
void address (int* x, int* y)
{
*x = *y;
}
即使您的問題的措辭很差。
如果我誤解了,並且您確實希望能夠更改變量的地址,則不能。變量的地址不是附加到可以更改的變量的一條信息。變量的地址是的變量。它的名字只是人類的便利。
更多的答案
x和y的主要是在說0x1234的整數和0x1236然後調用你的函數。它碰巧有兩個叫做x和y的參數,這些參數與main和x和y沒有真正的關聯。這些參數指向整數,包含2個整數的地址。在你的情況下,主線'x和y。
我將調用main x和y main.x和main.y.我將調用函數x和y func.x和func.y
所以func.x = 0x1234和func.y = 0x1236。你可以做任何你這些喜歡,你做
func.x = func.y
OK所以現在func.x的原始值將丟失,它有func.y.的價值兩者現在都有main.y的地址。好吧,這並不改變main.x的任何方面main.y周圍
雜耍球不改變它們指向的東西,它只是使它們指向不同的事情
這樣想。在C程序
int x
方式分配這就是4個字節長的一個變量,並記住它的地址給我,我將把該地址爲「X」。在程序設計(舊舊的彙編程序等)的非常早期的日子裏,你將不得不編寫說
thing at 0x1234 = 42;
thing at 0x1236 = thing at 0x1234 + 2;
等。(你沒居然說「件事」你有一些CPU特定的指令,但其同樣的事情) ,這是編譯器的主要工作之一,允許你調用內存'count_of_mice'或'size_of_planet',因爲它的真正的硬讀碼只有數字
我不知道...當我調試,並輸入功能「地址」,我可以在表窗口中看到下的「本地人」是 X = 0x28ff18 Y = 0x28ff18 所以它的工作原理,但不是當我回到我的主要功能。我希望這個改變能夠繼續到我的主要功能。可能嗎? –
@JohnDale我已經達到並且滿足回答 – pm100
好的,謝謝,所以我們只是改變你的例子中的指針吧? –
我想改變使用函數的某個變量的地址
答案是:你不能。正如評論中指出的那樣,the address is an abstraction of a physical property
。變量在內存中佔據空間,只有一個變量可以佔用一個給定的空間(在今天存在的體系結構上)。
如果你的意思是你想改變兩個保存地址的變量(也稱爲pointers
)的值來保存不同的值,你的變量將需要聲明爲指針,你的函數將需要接受指針 - 以三分球。例如:
void address (int** x, int** y)
{
*x = *y;
}
int main(void)
{
int x = 2;
int y = 4;
int *px = &x; // px points to x
int *py = &y; // py points to y
address(&px, &py);
printf("%d", px);
return 0;
}
謝謝這是我一直在尋找! :) –
變量的地址是其標識特徵之一。你不能改變變量的地址,只能改變1的值。
或者這裏有另外一個比喻:假設我在一張紙條上寫下我的街道地址,「99 JB Lane」,然後給它給你。您可以使用該紙幫助您訪問我的房子。你甚至可以選擇改變我的房子,比如說耙葉。現在假設你在紙上塗上了「99」,並用「42」代替。你不是那樣改變我的實際門牌號碼,也不能讓我的房子和我的鄰居家成爲同一個房子。如果「42 JB Lane」碰巧是一個有效的地址,那麼你可以使用紙來訪問那裏的房子。
函數address()
接收到的參數值就像我給你的紙條:它們告訴函數在哪裏找到兩個變量的值,甚至使它能夠修改這些值,但函數不能用它們來更改其值存儲在這些地址的變量的標識。
你想做什麼?讓'x'和'y'在同一個地址? – yano
@yano。看起來他試圖改變地址而不移動變量:) –
你是什麼意思「改變地址」?地址是物理屬性的抽象。你可以做些什麼來改變它的措辭。請更清楚一點。 –