❶ c語言變數的地址
不可以,變數的地址不會變化。只可以修改變數對應的值(地址的內容)。
❷ C語言中變數的地址是什麼類型的
變數的地址,在C語言中,一般寫作指針類型。
不同類型的變數地址,用不同的指針進行保存。
比如,char 類型的地址,使用char*保存,而int型地址,用int *保存。
除此外,部分情況下也會採用整型類型來保存變數地址,具體使用何種整型類型,取決於編譯器:
1 16位編譯器,地址佔16位,2位元組,可以使用short或者int保存。
2 32位編譯器,地址佔32位,4位元組,可以使用int或long保存。
3 64位編譯器,地址佔64位,8位元組,可以使用long保存。
不過不推薦使用整型類型保存地址,會帶來移植上的不通用。
❸ C語言關於取值和取址
1、首先打開Visual C++,點擊左上角「文件」菜單按鈕,並點擊「新建」按鈕。在彈出的窗口中首先選擇「文件」選項卡,在左側列表中選取「C++ Source File」項。
❹ 在C語言中,地址與地址值有什麼區別
mai()
{int *p,w;這里定義了一個整型指針跟數據.它們各被分配了一個存儲單元,也就是地址,但是這個地址是不一定的,不可控制的.
w=9;在這里把9賦給了W,這時W的址地值就是9了.
p=&w;而在這里把W的地址賦給了指針變數P,這時P的地址值就是W的地址了.
簡單的說,地址是系統自動賦給的,每一個數據都有一個唯一的地址,而地址值是由用戶賦予的.是可控的.
❺ C語言指針和常規變數,地址和值的相互賦值有什麼是合法的和不合法的
char a[5]="abcd";這樣是合法的;
*a="abcd",a="abcd"都不合法,因為*a只是一個字元的空間。a代表的是a[]的地址;
*a='c';這樣是可以的;
❻ c語言 怎麼計算地址 和值 解讀一下這個程序好嘛
其實也可以吧a[3][4]這個二維數組看成3個一維數組:
a[3][4]={a[0],a[1],a[2]}
a[0]={0,1,2,3}
a[1]={4,5,6,7}
a[2]={8,9,10,11}
在這道題里標示符a代表a[0][0]的地址,標示符a[0]代表a[0][0]的地址,標示符a[1]代表a[1][0]的地址,標示符a[2]代表a[2][0]的地址 ->【解釋】例如定義一個一維整型數組 int b[10]; 那麼標示符b就能代表b[0](該數組的第一個元素)的地址,可以作為地址常量使用,類似指針。
printf("%d",a):題中a應該為a[0]的地址值,而a[0]為a[0][0]的地址值,所以a為a[0][0]的地址值。
printf("%d",*a):&為取地址符號,*為間接訪問符號,主要用於指針,比如int m,*q;q=&m; *q就可以代表m了,*q的值就是m的值。題中*a為a[0]的值,可惜a[0]不是個數,a[0]代表a[0][0]的地址值,所以*a為a[0][0]的地址值。【但*a[0]代表a[0][0]的值,兩者不要混淆】
printf("%d",a+1):指針可以和整數進行加減運算,運算結果仍是指針類型。比如定義一個一位數組 int b[10],*q;q=&b[4]; 那麼q代表b[4]的地址值,q+1代表b[5]的地址值,q+2代表b[6]的地址值。題中a+1代表a[1][0]的地址值(注意不是a[0][1])。
printf("%d",*(a+1)):之前說了,a+1代表a[1][0]的地址值,所以*(a+1)可以代表a[1][0],*(a+1)的值就是a[1][0]的值。
關於&就不多說了吧。。。打字好累。。。
❼ 關於C語言字元變數的地址
因為你這個a是字元數組,a相對於指針,但是a不能賦新值,比如:
#include <stdio.h>
int main()
{
char a[100];
scanf("%c",a);
*a=65;//允許像指針一樣操作
*(a+1)=0;
//a++; 但不可以和指針那樣遞增賦新值
printf(a);
return 0;
}
綜上,a相對於指針,但不完全是指針,所以scanf中對於a是不必&求地址。
如果是:
char a;
scanf("%c",a);//則是錯誤的,因為這里的a是字元,則會把a的值當著scanf參數,而非a的地址。
❽ C語言關於值傳遞與地址傳遞的問題
編程中,很多東西要你自己去摸索,才能真正的理解。關於地址與值的問題,其實你自己可以試,把變數的地址輸出來看看看是不是一樣,比如 printf("%x",&a); 這樣就是以把變數a的地址用16進制的方式輸出來,看看地址到底是怎麼一回事。
傳值與傳地址可以這樣理解:
就像我把我寫的作文抄了一份給你,你拿去看了之後把有的地方改了,現在我要交作文,而我有一份,所以我直接交了,我交的作文內容並沒有變,這就是傳值,即值傳遞。
同理,如果我把我的作文直接給你,你看了後也把有些地方改了,現在我也要交,你只能還給我,我再交,這時我交的就是被你改過的了,這就是傳地址,即引用傳遞。
這只是我的理解,有誤的地方還請指正。
❾ 在c語言中給一個變數賦值與賦地址的區別
1、傳遞的變數值不同
兩者其實傳遞的都是一個內存單元的內容。不同的是,值傳遞的內容是一個變數的值,得到這個值後,對這個值得修改不能改變原變數的值;而地址傳遞的是一個變數的地址,得到傳遞的地址值後,可以通過這個地址直接訪問地址對應的那個變數,進而修改那個變數的值。
2、傳遞的途徑不同
值傳遞只是將變數的內容復制一份而已,函數進行操作的其實是另一個變數,只是另一個變數的值和傳遞的變。賦地址相當於間接操作就相當於知道了這間房子的具體位置去找裡面的主人而賦值是直接去根據主人名字去找它。
3、傳遞的函數不同
賦地址inta=10,b;給變數賦值就是b=a;但是賦地址就不行因為地址只能賦給指針變數應在上面基礎上加char*p;把a的地址給p就是p=&a;地址只能存在指針變數中變數賦值,是可以給變數賦一個相同類型的任意的數據,而變數的地址是系統在內存隨機分配的,不能更改。並且只有指針變數才能賦地址值。
給變數賦地址這個變數要為指針變數int*p,b;*p=&b;給變數賦值只要類型相同就行。其實都是一樣,都是給一個數據,地址也是一個數值而已給變數賦值是復制一個數如:inta=1b;b=a;則變數b被賦值為a的值,但是賦地址得用指針,因為指針的定義就是地址的意思。
❿ C語言中地址值和地址的區別是什麼
地址是存放值的內存空間對應的門牌號碼。
地址值是門牌號對應內存空間里存放內容。
通俗講,一棟樓房,
101號房間什麼都沒只有1個人。
這個人是值。
101是地址。
房間是內存空間。