『壹』 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]
『貳』 c語言函數參數里的取地址符號是什麼意思
顧名思義,取地址符的用處 就是取它的地址,而編程過程中,取的都是變數存放在內存中的地址,通過地址可以直接訪問到存放在該地址里的數據。
『叄』 c語言的數組前加&有什麼用
&是取地址符,&xx[i][j+1]也就是得到xx[i][j+1]的地址,即它的指針,以便於在該函數中通過參數傳遞地址的方法,利用形參對原數組的值加以操作。
『肆』 二維數組前在取地址符是什麼意思
[]是數組的符號,你表示一個數組就可以用。如:a[1],一維數組。b[2][3],二維數組。
是取地址符,加變數就是看這個變數的內存地址在哪兒,一般用16進製表示
『伍』 c語言中取地址符和*有什麼區別
區別如下:
(1)兩者根本意義不同。*是指針的意思,而&是去地址的意思,這兩個相輔相成。
(2)用法不同。高級的c語言都是動態開辟內存,是使用malloc和free,這時就不用&了,因為取引用都是對於棧上的數據,在數據結構中,都是在堆上開辟數據容量。
(3)語言規則不同,變數類型加*就是一個指向該變數類型的指針,通俗點說,指針就是可以通過地址修改和獲取該變數的值,而&符號只是獲取該變數的地址!
指針中的「取地址符」
(5)C語言數組前加取址符什麼意思擴展閱讀:
引用的聲明符放置在變數名的前面,和*操作符的用法一樣。
引用聲明完畢後,相當於目標變數名有兩個名稱,即該目標原名稱和引用名,且不能再把該引用名作為其他變數名的別名。ra=1; 等價於 a=1;
聲明一個引用,不是新定義了一個變數,它只表示該引用名是目標變數名的一個別名,它本身不是一種數據類型,因此引用本身不佔存儲單元,系統也不給引用分配存儲單元。
故:對引用求地址,就是對目標變數求地址。&ra與&a相等。
#include<iostream>using namespace std;int main()
{ int m[10]={1,2,3,4,5,6,7,8,9,10}; int (&n)[10]=m; for(int i=0;i<10;i++) cout<<m[i]<<' ' ;
cout<<endl; for( i=0;i<10;i++) cout<<n[i]<<' ' ; cout<<endl; return 0;}
例如:
int*pointer;//建立一個指針
int*&p1=pointer;/*
正確,編譯系統把"int*"看成一體,把"&p1"看成一體,即建立指針pointer的引用,就是給指針pointer起別名p1。
int&*p2=pointer;//錯誤,這就變成了引用的指針。
『陸』 C語言的數組名可以加取地址符嗎例如int a[2],然後輸出&a,好像在哪裡看見過,但是覺得意義
可以加取地址符,但是a就表示&a[0],沒必要。
『柒』 如果在字元數組名前加上取地址操作符&,會發生什麼(c語言)
數組名稱就是地址 在加上取地址 取的是地址的地址 算上雙重指針的那種
『捌』 C語言中 用scanf函數輸入字元串數組,取地址符&是不用輸的,如果輸了取地址符算錯么 ,或者含義不一樣么
不一樣。
C語言的字元串為數組形式,而數組的名稱可以表示其地址,故對字元串輸入不需要加地址符。而單獨的字元、整型變數等的名稱不能直接表示地址,故需要加地址符。
數組名就代表了該數組的地址。整個數組是一塊連續的內存單元,數組名所代表的地址為第0個元素的地址,c就代表c[0]的地址。
設數組c的首地址為0X2000,也就是說c[0]地址為0X2000,則數組名c就代表這個首地址。因為c已經表示地址,所以在c前面不能再加取地址符&。
字元串數據類型是建模在形式字元串的想法上的數據類型。字元串是幾乎在所有編程語言中可以實現的非常重要和有用的數據類型。
(8)C語言數組前加取址符什麼意思擴展閱讀
為了避免這種情況,可多設幾個字元數組分段存放含空格的串。程序可改寫如下:
#include<stdio.h>
intmain()
{
charstr1[20],str2[20],str3[20];
printf("Input string: ");
scanf("%s %s %s %s",str1,str2,str3);
printf("Your string: %s %s %s %s ",str1,str2,str3);
}
運行結果:
Input string: C C++ Java
Your string: C C++ Java
『玖』 c語言中"&取地址"是什麼意思
找到變數在內存空間的位置,對變數進行操作時,會找到該處。
『拾』 c語言編程輸入時為什麼一維數組要加地址符,字元數組就不用呢
因為字元數組,數組名本身就是指一個地址。
定義了字元型數組char name[10]。name有兩個含義:一個是代表著name這個數組第一個位置的地址,也就是name[0]的地址。可以說name就等價於&name[0]。
還有一種意思就是指代name整個數組。&name 就是整個數組的首地址。所以name和&name取得的地址是相同的。
(10)C語言數組前加取址符什麼意思擴展閱讀
name和&name區別:
不同點在於:name+1表示的是數組第二個元素的地址,而&name+1表示的是整個數組後又一個name數組的首地址,即&name[10]後一個新的name數組的首地址。例如:
#include<stdio.h>
int main(void)
{
char name[10]={"hello csdn"};
printf("name+1的地址:%p ",name+1);
printf("&name+1的地址:%p ",&name+1);
return 0;
}
所以說scanf("%s",name);和scanf("%s",&name);執行後的結果是一樣的,都是name的首地址,都是給字元數組name賦值。推薦用 scanf("%s",name); ,第二種不容易理解也容易犯錯,有些編譯軟體也不支持會報錯。