先貼代碼給你們湊乎湊乎!!!!!!!!!!!!!!!!!!
#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的結果是怎麼一回事? 有沒有很懂指針的大神 , 出來幫我解釋下?