您现在的位置: 主页 > 嵌入式开发入门到精通 > 单片机技术进阶 > C51学习心得体会,指针和数组在程序设计中的关系 -
本文所属标签:
为本文创立个标签吧:

C51学习心得体会,指针和数组在程序设计中的关系 -

来源: 网络用户发布,如有版权联系网管删除 2018-09-07 

[导读]
C语言中的指针和数组几乎可以互换,数组名可认为是一个常量指针,指针可用来完成涉及数组下标的操作。e.g.int * nPtr;int Array[size];(1)数组与指针等价nPtr = Array;或者nPtr = &Array[0];(2)引

C语言中的指针数组几乎可以互换,数组名可认为是一个常量指针,指针可用来完成涉及数组下标的操作。

本文引用地址: http://www.21ic.com/app/mcu/201806/764961.htm

e.g.int * nPtr;

int Array[size];

(1)数组与指针等价

nPtr = Array;或者nPtr = &Array[0];

(2)引用数组元素Array[3]

nPtr[3]或者*(nPtr+3)或者*(Array+3)

其中,nPtr[3]为指针下标表示法。

(3)e.g.数组拷贝

//用数组表示法把s2拷贝到s1中

void copy1(char *s1,constchar *s2)

{

int i

for(i=0;s1[i]=s2[i];i++);

}

//用指针表示法把s2拷贝到s1中

void copy1(char *s1,constchar *s2)

{

for(;* s1=* s2;s1++,s2++);

}

(4)指针数组

char * suit[4]={"zhonghua","renmin","gonghe","guojia"};

//char * 表示suit数组的每一个元素都是指向char类型的指针,即suit数组中存储的是4个指针。

//等价于 char suit[4][9]={"zhonghua","renmin","gonghe","guojia"};

//二维数组必须设置相同的列数,因此指针数组更具有灵活性。

(5)数组指针

int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

int (*p)[4];

p=a;

*(*(p+i)+j);//表示a[i][j]的值

void search(float (*p)[4],int n);//多维数组的指针作为函数参数

search(a,2);//函数调用

(6)指向指针的指针

e.g. main()

{

char *name[]={"Beijing","Chongqing","Shanghai","Tianjin","Shijiazhuang"};

char **p;

int i;

for(i=0;i<5;i++)

{ p=name+i;

printf("%sn",*p);//如果是**p,表示一个字符。

}

}


举例:洗牌和发牌程序

#include
#include
#include

void shuffle(int [][13]);//为什么参数中数组的第二个下标必须有
void deal(const int [][13],const char * [],const char * []);

main()
{
int deck[4][13]={0};
constchar * face[4]={"Hearts","Diamonds","Clubs","Spades"};//指针数组

constchar * suit[13]={"one","two","three","four","five","six","seven",
"eight","nine","ten","eleven","twelve","theteen"};
srand(time(NULL));
shuffle(deck);
deal(deck,face,suit);* face[4]和* suit[13]数组必须定义成const,否则在此出现错误,

//错误类型:不能把“* char[]”转换成“const * char[]”
return 0;
}


void shuffle(int wDeck[][13])
{
int row,col,i;
for(i=1;i<53;i++)
{
row=rand()%4;
col=rand()%13;
while(wDeck[row][col]!=0)
{
row=rand()%4;
col=rand()%13;
}
wDeck[row][col]=i;
}
}


void deal(const int wDeck[][13],const char * wFace[],const char * wSuit[])
{
int i,row,col;
for(i=1;i<53;i++)
for(row=0;row<4;row++)
for(col=0;col<13;col++)
{
if(wDeck[row][col]==i)
printf("%5s of %-8s%c",wFace[row],wSuit[col],i%2==0?'n':'t');
}
}




              查看评论 回复



嵌入式交流网主页 > 嵌入式开发入门到精通 > 单片机技术进阶 > C51学习心得体会,指针和数组在程序设计中的关系 -
 

"C51学习心得体会,指针和数组在程序设计中的关系 -"的相关文章

网站地图

围观()