當前位置:首頁 » 編程語言 » c語言取數組首地址

c語言取數組首地址

發布時間: 2023-01-08 15:57:21

c語言中什麼叫首地址

首地址就是該變數所佔的存儲區域中的第一個單元的地址。

比如定義一個數組,數組的第一個數的地址就是首地址

int a[10];

那麼a[0]的地址就是首地址

int a[10][10];

則 a[0][0]的地址就是首地址

㈡ C語言中數組首地址和數組第一個元素的地址有什麼區別呢

C語言中數組首地址和數組第一個元素的地址關系如下:

1、它們的地址值是相等的。

2、第1個元素的地址如果是p,則p+1就是第2個元素的地址。

3、數組的首地址如果是p,則p+1就跳過這個數數組而指向這個數組最後一個元素最後一個位元組的下一位元組。

(2)c語言取數組首地址擴展閱讀:

數組的創建:在創建數組時,我們必須定義數組的類型和大小,數組的大小不能為0,數組中的元素類型都是相同的。

數組的初始化:在數組創建時,我們也要必須為數組初始化。

一個數組,可以保存一些數據,但是每一個數據不一定有用。或者說,有些時候的數組的數據不一定要輸出,所以我們可以再來開一個相同的數組,來標記模擬是否輸出數組中的某個元素。

㈢ C語言數組首地址相關問題!!

若a是一維數組名,我們知道*a就是a[0],就是*(arr+0)。因為a是數組的首地址,*a就是取首地址所指元素,就是數組的第一個元素。
同樣的道理,a是二維數組名時,*a也是取a的第一個元素,但是此時a所指的元素是一個一維數組,所以,實際上a所指元素是一維數組的首地址。
二維數組a,a是數組地址,指向行;有一個等價關系 a[i]=*(a+i)
a[i]指向列,&a[i]又指向行。

你可以將*和&理解為相反的操作:
a指向行,*(a+i)指向列,*(*(a+i)+j)等價於a[i][j];
就按a[3][4]這個例子來看:3行4列數組a可以理解為a[0],a[1],a[2]這三個一維數組
a[0][0] a[0][1] a[0][2] a[0][3]//第一行a[0][]
a[1][0] a[1][1] a[1][2] a[1][3]//第二行a[1][]
a[2][0] a[2][1] a[2][2] a[2][3]//第三行a[2][]
(數組含有4個元素)構成的二維數組,*a就是a[0],而a[0]就是第0行的首地址,也就是第一個數組的首地址。*(a+i)就是a[i],就是第i行的首地址。

如果現在定義a是字元型數組,輸出*a(也就是第一行的首地址)為0000,再輸出*(a+1)就是0004,而不是0001,就可以說明a是指向一維數組的指針。

㈣ 如何用一個C語言函數返回一個數組的首地址

int * scanffile(FILE *fp,int n){
int i;
static int array[10]; //因為array是局部變數,隨scanffile()函數的結束,該內存被釋放,因此,你在之後得不到相應的數據了。 改成static靜態變數就可以了!

for(i=0;i<n;i++){
fscanf(fp,"%d\t",&array[i]);

}
for(i=0;i<5;i++)
printf("%d\t",array[i]);
return array;
}

㈤ C語言如何獲得數組首地址的指針

單維數組名就是首地址,多維數組名就是第1維的首地址,因此取首地址,可以把數組名賦給對應的指針變數,或取索引為0的首個元素地址賦給對應的指針變數。舉例:
單維 int arr[10]; int * p =arr; 或 int * p =&arr[0];
二維 int arr[10][10]; int (*p)[10] =arr; 或int (*p)[10] = &arr[0];// 取第一維地址
int arr[10][10]; int * p= & arr[0][0]; // 取多維中的首個元素

㈥ C語言中怎麼輸出數組的首地址

%p
直接用16進制地址形式輸出地址
%d
把地址直接用10進制形式輸出
char
a[]
=
"hellow
C++";
int
b[]
=
{0x01,0x02,4,0x08,0};
如上數組如下輸出都可以:
printf("十進制地址%d
十六進制地址%p",
a,
a);
printf("十進制地址%d
十六進制地址%p",
b,
b);
printf("十進制地址%d
十六進制地址%p",
&a[0],
&a[0]);
printf("十進制地址%d
十六進制地址%p",
&b[0],
&b[0]);

㈦ C語言中如何指定數組的首地址在指定的地址

據我所知,創建數組需要2個參數,1是地址,2是分配空間。空間分配是不能重復的,也就是說創建2個數組,這兩個數組是不可能重合的,為了防止這種事情出現,所以不能指定地址。而是編譯器自動分配,不能人為。
但是可以省去分配空間這個步驟,而是只創建地址,這就是指針的概念。比如int a[12],你若是想創建另一個代替a[12],可以int *p=a;這樣,p的值就是a數組的首地址了。int *p =(int*)0x80000;意思就是p[0]的地址是0x80000,創建的時候要確定(int*)0x80000已經分配過了,可以使用了,不然就相當於野指針,容易出錯。

㈧ C語言中怎麼輸出數組的首地址

%p 直接用16進制地址形式輸出地址
%d 把地址直接用10進制形式輸出
char a[] = "hellow C++";
int b[] = {0x01,0x02,4,0x08,0};
如上數組如下輸出都可以:
printf("十進制地址%d 十六進制地址%p", a, a);
printf("十進制地址%d 十六進制地址%p", b, b);
printf("十進制地址%d 十六進制地址%p", &a[0], &a[0]);
printf("十進制地址%d 十六進制地址%p", &b[0], &b[0]);

㈨ 在C語言中怎麼樣得到二維數組的首地址哦

就這道題來說,雖然編譯器給出了對p=a的警告,但是程序仍然可以正確的運行。因為你的程序中並沒有對p進行二次解引用。詳細來說,執行p=a時,由於兩者類型不同,編譯器將a轉換成指向整型的指針,然後復制給p,所以p可以正確地指向二維數組的首元素a[0][0]。 最後我再解釋一下一些表達式的意思: a,a[0],&a[0][0],p均表示該二維數組的首地址。 &a[1][0],a[1],a+1,p+3均表示該二維數組中第二維的首地址。 a[0][1],a[0]+1,p+1均表示該二維數組中的第二個元素的地址。 p+n表示第n+1個元素。 理解上只要知道a[i][j]是元素,a[i]和p是指向整型的常指針,a是指向指向整型的常指針的常指針,也是數組的首地址就可以了。

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:585
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:881
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:574
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:761
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:677
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1005
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:250
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:108
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:799
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:705