C++基礎(chǔ)| 指針數(shù)組
發(fā)布時間:2023-11-23 14:20:16
指針的數(shù)組,實際是一個數(shù)組,長度由數(shù)組本身決定,這個數(shù)組的所有元素都是指針類型,存放的都是地址。指針數(shù)組是一個由指針變量組成的數(shù)組,也就是說其中的元素都是指針變量。本文主要是C++指針數(shù)組和數(shù)組指針及區(qū)別。
1、指針數(shù)組
指針數(shù)組的定義:type* pArray[n];
例如, int* pa[3]
指針數(shù)組中每個元素為一個指針
type*
為數(shù)組中每個元素的類型
pArray
為數(shù)組名
n
為數(shù)組大小
例如,
#include <iostream>
using namespace std;
#include <string.h>
int lookup_keyword(const char* key, const char* table[], const int size)
{
int ret = -1;
int i = 0;
for(i=0; i<size; i++)
{
if(strcmp(key, table[i]) == 0)
{
ret = i;
break;
}
}
return ret;
}
#define DIM(a) (sizeof(a)/sizeof(*a))
int main()
{
const char* keyword[] = {
"do",
"for",
"if",
"register",
"return",
"switch",
"while",
"case",
"static"
};
cout << lookup_keyword("return", keyword, DIM(keyword)) << endl;
cout << lookup_keyword("main", keyword, DIM(keyword)) << endl;
}
2、數(shù)組指針
數(shù)組指針用于指向一個數(shù)組。
數(shù)組名是數(shù)組首元素的起始地址,但并不是數(shù)組的起始地址
通過將取地址符&作用于數(shù)組名可以得到數(shù)組的起始地址,例如,&array
可通過數(shù)組類型定義數(shù)組指針: ArrayType* pointer;
例如, array int* pc
也可以直接定義:type (*pointer)[n];
例如,int (*pc)[5]
pointer
為數(shù)組指針變量名
type
為指向的數(shù)組的類型
n
為指向的數(shù)組的大小
#include <iostream>
using namespace std;
typedef int(AINT5)[5];
typedef float(AFLOAT10)[10];
typedef char(ACHAR9)[9];
int main()
{
AINT5 a1;
float fArray[10];
AFLOAT10* pf = &fArray;
ACHAR9 cArray;
char(*pc)[9] = &cArray;
int i = 0;
printf("%d, %d\n", sizeof(AINT5), sizeof(a1));
for(i=0; i<10; i++)
{
(*pf)[i] = i;
}
for(i=0; i<10; i++)
{
printf("%f\n", fArray[i]);
}
printf("%0X, %0X\n", &cArray, pc+1);
}
3、指針數(shù)組和數(shù)組指針的區(qū)別
1)指針數(shù)組
指針數(shù)組:指針數(shù)組可以說成是 ”指針的數(shù)組”,首先這個變量是一個數(shù)組。
其次,”指針”修飾這個數(shù)組,也就是說這個數(shù)組的所有元素都是指針類型。
在 32 位系統(tǒng)中,指針占四個字節(jié)。
2)數(shù)組指針
數(shù)組指針:數(shù)組指針可以說成是”數(shù)組的指針”,首先這個變量是一個指針。
其次,”數(shù)組”修飾這個指針,也就是說這個指針存放著一個數(shù)組的首地址,或者說這個指針指向一個數(shù)組的首地址。
所以指針數(shù)組和數(shù)組指針的區(qū)別,因為二者根本就是兩種類型的變量。
以上為本次所有分享內(nèi)容
- 上一篇:|C語言|函數(shù)的定義
- 下一篇:C++| 枚舉(enum)