c中指针的一个问题
时间:2008-05-10 10:58:41
来源:论坛整理 作者: 编辑:chinaitzhe
#include <stdio.h>
int main()
{
int i;
int a[5]={1,2,3,4,5};
int *num[5];
int **p;
p=num;
printf("%p\n",num); //我想得出一维指针指向的地址???(这样做正确吗)
printf("%p\n",p); //我想得出二维指针指向的地址???
for(i=0;i <5;i ) //为什么不运行呢???
{
printf("%d\n",**p);
p ;
}
}
网友回复:
- C/C code
Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ #include <stdio.h> int main() { int i; int a[5]={1,2,3,4,5}; int *num[5]; int **p; p=num; printf("%p\n",num); //我想得出一维指针指向的地址???(这样做正确吗) printf("%p\n",p); //我想得出二维指针指向的地址??? for(i=0;i<5;i ) num[i] = a i; for(i=0;i<5;i ) //为什么不运行呢??? { printf("%d\n",**p); p ; } }
网友回复:没猜错的话崩溃出现在这
printf("%d\n",**p);
你的指针未被初始化,这么弄很轻易出现PGF,访问违例
网友回复:1.你的指针数组int *num[5]根本就没有被初始化或者被赋值过
2.假如你想要你写的这个for循环正常工作,就要把num的5个元素都赋值
3.即使完成2,这个for循环也可能不是你想要的结果,它只是输出num的5个元素指向的数组的第一个值
- C/C code
Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ #include <stdio.h> int main() { int i; int a[5]={1,2,3,4,5}; int b[5]={2,3,4,5,6}; int c[5]={3,4,5,6,7}; int d[5]={4,5,6,7,8}; int e[5]={5,6,7,8,9}; int *num[5]; num[0] = a; num[1] = b; num[2] = c; num[3] = d; num[4] = e; int **p; p=num; printf("%p\n",num); //一维指针指向的地址 printf("%p\n",p); //二维指针指向的地址 for(i=0;i<5;i ) { printf("%p\n",*p); //每个一维指针指向的地址 p ; } return 0; }
做了一些修改,lz 自己运行看看吧
网友回复:在定义指针时切记尽量初试话,不然你的指针是野指针,在应用的时候造成程序崩溃很正常
网友回复:没有崩溃呀
#include <stdio.h>
int main()
{
int i;
int a[5]={1,2,3,4,5};
int *num[5];
int **p;
p=num;
printf("111 %p\n",num); //我想得出一维指针指向的地址???(这样做正确吗)
printf("222 %p\n",p); //我想得出二维指针指向的地址???
for(i=0;i <5;i ) //为什么不运行呢???
{
printf("%d\n",**p);//////没有输出是因为你的num数组没有被赋值
p ;
}
}
whf@wanghf:~$ gcc a.c
whf@wanghf:~$ ./a.out
111 0xbf9b4f08
222 0xbf9b4f08
-1080340680
-16727095
1222716
-1080338113
-1080340584
/////
网友回复:其实用malloc分配一下地址就可以了
网友回复:没有明白你想最后运行什么。看1楼的哥哥写的意思输入这个东西,用**P这个。
你把P与num的地址连上了,没有把a[5]的地址也连上吧。。。个人观点。
printf("%p\n",num); //我想得出一维指针指向的地址???(这样做正确吗)
printf("%p\n",p); //我想得出二维指针指向的地址???
这么看地址,我觉得对,我就一直认为这个就是地址。个人观点。。
网友回复:请做如下修改:
void main()
{
int i;
int a[5]={1,2,3,4,5};
int *num[5];
int **p;
*num=a;
p=num;
printf("%p\n",*num); //我想得出一维指针指向的地址???(这样做正确吗)
printf("%p\n",p); //我想得出二维指针指向的地址???
for(i=0;i <5;i ) //为什么不运行呢???
{
printf("%d\n",**p);
(*p) ;
}
}
关键字:指针,一个,问题,
上一篇:请教几个小问题
下一篇:下面没有链接了











文章评论
共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面