亚洲区国产区激情区无码区,国产成人mv视频在线观看,国产A毛片AAAAAA,亚洲精品国产首次亮相在线

C 語(yǔ)言基礎(chǔ)教程

C 語(yǔ)言流程控制

C 語(yǔ)言函數(shù)

C 語(yǔ)言數(shù)組

C 語(yǔ)言指針

C 語(yǔ)言字符串

C 語(yǔ)言結(jié)構(gòu)體

C 語(yǔ)言文件

C 其他

C 語(yǔ)言參考手冊(cè)

C 語(yǔ)言指針和數(shù)組

在本教程中,您將了解C語(yǔ)言編程中數(shù)組與指針之間的關(guān)系。您還將學(xué)習(xí)使用指針訪問(wèn)數(shù)組元素。

在了解數(shù)組與指針之間的關(guān)系之前,請(qǐng)確保檢查以下兩個(gè)主體:

數(shù)組和指針之間的關(guān)系

數(shù)組是一個(gè)順序數(shù)據(jù)塊。讓我們編寫一個(gè)程序來(lái)打印數(shù)組元素的地址。

#include <stdio.h>
int main() {
   int x[4];
   int i;

   for(i = 0; i < 4; ++i) {
      printf("&x[%d] = %p\n", i, &x[i]);
   }

   printf("x數(shù)組的地址: %p", x);

   return 0;
}

輸出結(jié)果

&x[0] = 1450734448
&x[1] = 1450734452
&x[2] = 1450734456
&x[3] = 1450734460
x數(shù)組的地址: 1450734448

數(shù)組x的兩個(gè)連續(xù)元素之間相差4個(gè)字節(jié)。 這是因?yàn)閕nt的大小為4個(gè)字節(jié)(在我們的編譯器中)。

請(qǐng)注意,地址&x[0]和x是一樣的。這是因?yàn)樽兞棵鹸指向數(shù)組的第一個(gè)元素。

數(shù)組和指針之間的關(guān)系

從上面的示例中可以明顯看出,&x[0]它等效于x。并且,x[0]等效于*x。

同樣,

  • &x[1]等同于x+1 和 x[1]等同于*(x+1)。

  • &x[2]等同于x+2 和 x[2]等同于*(x+2)。

  • ...

  • 基本上&x[i]等同于x+i 和 x[i]等同于*(x+i)。

示例1:指針和數(shù)組

#include <stdio.h>
int main() {
  int i, x[6], sum = 0;
  printf("輸入6個(gè)數(shù)字: ");
  for(i = 0; i < 6; ++i) {
          // 等效于scanf("%d", &x[i]);
      scanf("%d", x+i);
          // 等同于 sum += x[i]
      sum += *(x+i);
  }
  printf("總和 = %d", sum);
  return 0;
}

運(yùn)行該程序時(shí),輸出為:

輸入6個(gè)數(shù)字:  2
 3
 4
 4
 12
 4
總和 = 29

在這里,我們聲明了一個(gè)包含6個(gè)元素的數(shù)組x。為了訪問(wèn)數(shù)組的元素,我們使用了指針。

在大多數(shù)情況下,數(shù)組名稱會(huì)衰減為指針。簡(jiǎn)而言之,數(shù)組名稱將轉(zhuǎn)換為指針。這就是為什么您可以使用指針訪問(wèn)數(shù)組元素的原因。但是,您應(yīng)該記住,指針和數(shù)組并不相同。

在某些情況下,數(shù)組名稱不會(huì)衰減到指針。

示例2:數(shù)組和指針

#include <stdio.h>
int main() {
  int x[5] = {1, 2, 3, 4, 5};
  int* ptr;

  //ptr被分配了第三個(gè)元素的地址
  ptr = &x[2]; 

  printf("*ptr = %d \n", *ptr);   // 3
  printf("*(ptr+1) = %d \n", *(ptr+1)); // 4
  printf("*(ptr-1) = %d", *(ptr-1));  // 2

  return 0;
}

運(yùn)行該程序時(shí),輸出為:

*ptr = 3 
*(ptr+1) = 4 
*(ptr-1) = 2

在此示例中,第三個(gè)元素的地址&x [2]被分配給ptr指針。 因此,當(dāng)我們打印* ptr時(shí)顯示3。

并且,輸出*(ptr+1)得到第四個(gè)元素。類似地,輸出*(tr-1)將得到第二個(gè)元素。