伊美时健康生活馆:C语言问题,关于指针的

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/28 20:31:32
#include <stdio.h>
void main()
{
int a[5]={1,3,8,9,6};
int *num[5]={&a[0],&a[1],&a[2],&a[3],&a[4]};\\编译时被指出该行5处非法。哪错了,书上是这么定义的啊。
int **p;
int i;
p=num;
for(i=0;i<5;i++)
{
printf("%d\t",**p);
p++;
}
}

在线等待。。。。。。。。
大哥啊,还是不对啊,我依你的方法改了,没用,第一个数正确了,后面几个数不正确了。。。

现在试试吧。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

#include <stdio.h>
void main()
{
int a[5]={1,3,8,9,6};
int *num[5];
int **p;
int i;
for(i=0;i<5;i++)
*(num+i)=&a[i];/*只能改成这样了*/

p=num;
for(i=0;i<5;i++)
{
printf("%d\t",**p);
p++;
}
getch();
}

没错啊 我使了 这是双重指针的用法啊 你再看下

指针数组定义时貌似不能这样初始化

1 指针数组的初始化,不能int *num[5]={&a[0],&a[1],&a[2],&a[3],&a[4]}这样 初始化。应该用for循环,for(i=0;i<5;i++)num[i]=&a[i];
2 指针数组应该指向二维数组的每一行第一个元素的地址。(我是这样理解的)

你的那个程序gcc里完全没错的,能通过编译而且运行正确……
你用什么编译器啊,建议你换个……