关于指针数组

来源:百度知道 编辑:UC知道 时间:2024/05/12 14:45:32
#include "stdio.h"
void display_array(int *p_num)
{
int i;
for(i=0;i<5;i++)
printf("\n%d",p_num[i]);
}
void main()
{
int a[]={1,2,3,4,5};
int *num[]={&a[0],&a[1],&a[2],&a[3],&a[4]};
display_array(num);
}我想知道我错在哪里。。。为什么老是初始化错误!!还有我不太懂char *a[]与char (*a)[]的区别 ~~书本说前者是指针数组,后者是指向数组的指针,可是按优先级看,[]大于*,所以形式看起来怎么好像前者是定义一个指针(数组指针),后者定义一个数组(指针数组),谁能给我讲解下~
a[0],a[1]不都是数组a的元素吗,不是要取地址吗,指针数组不是存放指针才对吗??

程序修改如下:
//---------------------------------------------------------------------------

#include "stdio.h"
void display_array(int *p_num[])/*注意这里*/
{
int i;
for(i=0;i<5;i++)
printf("\n%d",*p_num[i]);/*注意这里*/
}
void main()
{
int a[]={1,2,3,4,5};
int *num[5] ;/*注意这里以及以下5行*/
num[0]=&a[0];
num[1]=&a[1];
num[2]=&a[2];
num[3]=&a[3];
num[4]=&a[4];
display_array(num);
}
//---------------------------------------------------------------------------

#include "stdio.h"

void display_array(int **p_num) //注意这里
{
int i;
for(i=0;i<5;i++)
printf("\n%d",*p_num[i]); //还有这里
}
void main()
{
int a[]={1,2,3,4,5};
int *num[]={&a[0],&a[1],&a[2],&a[3],&a[4]};
display_array(num);
}

形参与实参类型不同:
void display_array(int *p_num)
改为:void display_array(int