程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C說話 指針數組詳解及示例代碼

C說話 指針數組詳解及示例代碼

編輯:關於C++

C說話 指針數組詳解及示例代碼。本站提示廣大學習愛好者:(C說話 指針數組詳解及示例代碼)文章只能為提供參考,不一定能成為您想要的結果。以下是C說話 指針數組詳解及示例代碼正文


假如一個數組中的一切元素保留的都是指針,那末我們就稱它為指針數組。指針數組的界說情勢普通為:

dataType *arrayName[length];

[ ]的優先級高於*,該界說情勢應當懂得為:

dataType *(arrayName[length]);

括號外面解釋arrayName是一個數組,包括了length個元素,括號裡面解釋每一個元素的類型為dataType *。

除每一個元素的數據類型分歧,指針數組和通俗數組在其他方面都是一樣的,上面是一個簡略的例子:

#include <stdio.h>
int main(){
  int a = 16, b = 932, c = 100;
  //界說一個指針數組
  int *arr[3] = {&a, &b, &c};//也能夠不指定長度,直接寫作 int *parr[]
  //界說一個指向指針數組的指針
  int **parr = arr;
  printf("%d, %d, %d\n", *arr[0], *arr[1], *arr[2]);
  printf("%d, %d, %d\n", **(parr+0), **(parr+1), **(parr+2));
  return 0;
}

運轉成果:

16, 932, 100
16, 932, 100

arr 是一個指針數組,它包括了 3 個元素,每一個元素都是一個指針,在界說 arr 的同時,我們應用變量 a、b、c 的地址對它停止了初始化,這和通俗數組是何等地相似。

parr 是指向數組 arr 的指針,確實地說是指向 arr 第 0 個元素的指針,它的界說情勢應當懂得為int *(*parr),括號中的*表現 parr 是一個指針,括號裡面的int *表現 parr 指向的數據的類型。arr 第一個元素的類型為 int *,所以在界說 parr 時要加兩個 *。

第一個 printf() 語句中,arr[i] 表現獲得第 i 個元素的值,該元素是一個指針,還須要在後面增長一個 * 能力獲得它指向的數據,也即 *arr[i] 的情勢。

第二個 printf() 語句中,parr+i 表現第 i 個元素的地址,*(parr+i) 表現獲得第 i 個元素的值(該元素是一個指針),**(parr+i) 表現獲得第 i 個元素指向的數據。

指針數組還可以和字符串數組聯合應用,請看上面的例子:

#include <stdio.h>
int main(){
  char *str[3] = {
    "c.biancheng.net",
    "C說話中文網",
    "C Language"
  };
  printf("%s\n%s\n%s\n", str[0], str[1], str[2]);
  return 0;
}

運轉成果:

c.biancheng.net
C說話中文網
C Language

須要留意的是,字符數組 str 中寄存的是字符串的首地址,不是字符串自己,字符串自己位於其他的內存區域,和字符數組是離開的。

也只要當指針數組中每一個元素的類型都是char *時,能力像下面那樣給指針數組賦值,其他類型不可。

為了便於懂得,可以將下面的字符串數組改成上面的情勢,它們都是等價的。

#include <stdio.h>
int main(){
  char *str0 = "c.biancheng.net";
  char *str1 = "C說話中文網";
  char *str2 = "C Language";
  char *str[3] = {str0, str1, str2};
  printf("%s\n%s\n%s\n", str[0], str[1], str[2]);
  return 0;
}

以上就是對 C說話指針數組的材料整頓,後續持續彌補相干材料,感謝年夜家對本站的支撐!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved