在C++中,內建陣列和指標的關係非常密切,二者幾乎可以互換使用,陣列名稱可以當成常數指標,指標也可以用在任何與內建陣列索引有關的運算,下程式碼
假設以下宣告
int b[5]
int *bPtr
以下敘述會將bPtr設為陣列b的第一個元素的位址
bPtr=b
這等同於使用下列敘述,取得陣列第一個元素的位址
bPtr=&b[0]
#include <iostream>
using namespace std;
int main()
{
int b[]={10, 20, 30, 40};
int *bPtr=b;
cout<<"Array b displayed with:\n\nArray subscript notation\n";
for(size_t i=0;i<4;++i)
cout<<"b["<<i<<"]="<<b[i]<<'\n';
cout<<"\nPointer/offset notation where"
<<"the pointer is the array name\n";
for(size_t offset1=0;offset1<4;++offset1)
cout<<"*(b+ "<<offset1<<")= "<<*(b+offset1)<<'\n';
cout<<"\nPointer subscript notation\n";
for(size_t j=0;j<4;++j)
cout<<"bPtr["<<j<<"]="<<bPtr[j]<<'\n';
cout<<"\nPointer/offset notation\n";
for(size_t offset2=0;offset2<4;++offset2)
cout<<"*(bPtr+ "<<offset2<<")= "
<<*(bPtr+offset2)<<'\n';
}
上面的程式碼中,我們用了四種參用陣列元素方法:1陣列索引表示法 2將陣列名稱作為指標的指標/偏移量表示方法pointer/offset notation with the built-in array,s name as a Pointer 3指標/索引表示法pointer subcript notation 4指標/偏移量表示法pointer/offset notation with a pointer
讓使用輸入正整數N,印出NxN個的*組成的圖形
#include <stdio.h>
int main()
{
int N;
printf("N= ");
scanf("%d", &N);
int i,j;
for(i=1;i<=N;i++)
{
for(j=1;j<=N;j++)
{
printf("*");
}
printf("\n");
}
return 0;
}
上面的程式碼中我們先宣告一個N讓使用者輸入數字,讓鍵盤輸入,接著在宣告兩個變數,第一個for迴圈的i是第幾行的意思,第二個for迴圈的j是第幾個數字的意思,i跟j不能是同一個變數,同樣的只能是N因為N代表的是他的上限是固定的,最後我們就printf出我們輸入數字的正方形,然後記得要\n換行就是我們要的結果