先贴代码给你们凑乎凑乎!!!!!!!!!!!!!!!!!!
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
void test()
{
int *p = NULL;
int n, i;
printf("请输入整数n(n<=40):");
scanf("%d", &n);
p = (int *)malloc(n * sizeof(int));
if (p == NULL)
{
printf("No enough memory! \n");
exit(0);
}
for (i = 0; i < n; i++)
p[i] = i;
for (i = 0; i < n; i++)
printf("%d \n", p[i] );
free(p);
_getch();
}
void test1()
{
int a[] = {1 , 2 , 3 , 4 , 5};
int n, i;
int * p;
p = a;
for (i = 0; i < 5; i++)
printf("%d \n", p[i]);
_getch();
}
void test2()
{
float a[] = { 100 , 200 , 300 , 400 , 500 };
float * p[] = { &a[0] , &a[1] , &a[2] ,&a[3] ,&a[4] };
int i;
for (i = 0; i < 5; i++)
{
printf("%f \n", p[i] );
}
_getch();
}
int main()
{
test();
printf("======================= \n");
test1();
printf("=======================\n");
test2();
printf("=======================\n");
_getch();
return 0;
}
以上代码 , test 和test1 中 , 使用指针都是p[i]就可以调用元素 . 但在test2中如果用p[i]去调用元素 , 也不会报错 , 但是会显示元素结果都为000.00000 , 我很差异 .
我去进行调试 , 查看内存变量 , 发现也正常 ,
对于为什么test2栏中 , 使用 p[i] 进行调用元素 , 会在控制台显示出0.00000 , 我目前也不知道 , 就算P中存入的是a的地址 , 不也应该显示a的地址嘛??????
当我在test2 中使用 * p[i] 进行元素调用 , 才会显示正常的数值.
这显示0.0000的结果是怎么一回事? 有没有很懂指针的大神 , 出来帮我解释下?