c語言取地址符
1. c語言中"&取地址"是什麼意思
找到變數在內存空間的位置,對變數進行操作時,會找到該處。
2. C語言中取地址的符號都有哪些
&也有一些本身就是地址的,比如數組名那些
*p那是指針~~!
不同的,那個不是取地址,是取那地址裡面的內容。
3. c語言取地址符有什麼用,為什麼scanf一定要用&
取地址符的作用是告訴系統定義的變數的值存放在內存空間的地址,scanf函數就根據這個地址值定址,然後從這個地址空間中取出我需要的數據值,對於變數來說,只能通過&a的方式獲取到該變數在內存中的地址,對於指針變數和數組,就不需要這個取地址符了。代碼說明如下:
//變數
inta;
scanf("%d",&a);
//指針
inta,*p;
p=&a;
scanf("%d",p);
//數組
inta[10];
for(inti=0;i<10;i++)
scanf("%d",a+i);//a+i<===>&a[i]
4. C語言中地址符究竟是什麼
地址符& 就是獲得一個變數/常量/函數的內存地址,沒有別的含義。
scanf中,使用地址符,是因為scanf需要的是指針變數(因此指針變數不需要地址符),而普通變數需要通過地址符轉譯為指針使用。
charc,*p;
c='a';
p=&c;//這是地址符的「真諦」
scanf("%c",&c);
scanf("%c",p);
注意兩個scanf語句都是正確的。
5. C語言中 用scanf函數輸入字元串數組,取地址符&是不用輸的,如果輸了取地址符算錯么 ,或者含義不一樣么
一般變數使用取地址符,是獲取其地址,即為指向該變數的指針。
數組名就是數組的首地址,指向該數組的第一個元素的指針,只不過是常量指針而已。所以不用再加取地址符。
要加的話可以如下:
char str[10];
scanf("%s", &str[0]); // 取第一元素的地址,等價於數組名 str
6. C語言中 取內容與取地址運算符的問題
我明白你什麼意思,指針的概念確實不好理解!
1,先給你說下指針,你把指針理解了運算符的抵消就明白一半了!
指針裡面是保存的內存地址(就像int變數裡面保存的是整型變數一個意思)。
整型變數保存在內存裡面,我可以通過這個變數名稱來調用這個數據,也可以通過指針裡面這個變數的地址加上*(間接訪問運算符),來調用這個數據。
2,再說下運算符*和&
*是間接訪問運算符:就是可以通過地址,找到這個地址裡面的變數,所以
*p1
就等同於變數a
&是求地址運算符:就是將變數所在的內存地址,提取出來
這兩個運算符的運算等級是相同的,也就是說誰距離變數近,就誰先。所以*&a和*(&a)是一樣的,都是先取地址,在對地址進行間接訪問。但是一定要注意*與&的順序,&*a是無效的。
3,再說下題
*運算符就是對地址進行操作的,那麼
*地址
的意思就是訪問地址裡面的數據,而&a就是取變數a的地址,所以*&a:
先取變數a的地址
再
對地址進行間接訪問,兩個操作就相互抵消了,最後還是變數a。
4,還有什麼不明白的么?
7. c語言函數參數里的取地址符號是什麼意思
就是找到這個變數的內存地址,直接讀寫
例如:scanf("%d",&a);
就是找到a的地址,把讀入一個數寫到a
的地址中
在例如
p=&a;
就是讓指針p指向a的內存地址,這樣直接對內存讀寫.有利於提高操作速度.
8. C語言中的符號 & 和 | 是什麼意思
&: 在C語言中有兩種意思,一種是取地址符,是單目運算符;另一種是位運算符,表示「按位與」,是雙目運算符。|: 是位運算符,表示「按位或」。
資料擴展
1、符號 & 和 | 這兩個運算符都是二進制的按位操作符。
&: 二進制「與」(都為1時,結果是1,否則是0。),比如:1010 & 1011 = 1010,1010 & 1000 = 1000。
|: 二進制「或」(有1時,結果是1,都是0時,結果為0。),比如:1010 | 1011 = 1011,1010 | 1000 = 1010。
2、位運算符將數字視為二進制值,並按位進行相應運算,運算完成後再重新轉換為數字。
例如:
表達式10&15表示(1010 & 1111),它將返回表示1010的值10。因為真真得真,或者是11得1,同位全是1結果也是1。
表達式10|15表示(1010 | 1111),它將返回表示1111的值15。假假得假。全零得零。
3、C語言中的符號分為10類:算術運算符、關系運算符、邏輯運算符、位操作運算符、賦值運算符、條件運算符、逗號運算符、指針運算符、求位元組數運算符和特殊運算符。
4、位操作運算符:參與運算的量,按二進制位進行運算。包括位與(&)、位或(|)、位非(~)、位異或(^)、左移(<<)、右移(>>)六種。