期望印出Array[5]中的數值:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int n =5;
int *Array,*aptr;
Array = (int*)malloc(n*sizeof(int));
memset(Array,0,5);
aptr = Array;
for(n = 0; n < 5; n++)
{
*aptr = n;
aptr++;
}
aptr = &Array[0];
for(n = 0; n < 5; n++)
{
printf("show array vaule = [%d]\n", (*aptr)++;
}
free(Array);
system("PAUSE");
return 0;
}
![]() |
| Result of this program. |
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int n =5;
int *Array,*aptr;
Array = (int*)malloc(n*sizeof(int));
memset(Array,0,5);
aptr = Array;
for(n = 0; n < 5; n++)
{
*aptr = n*2;
aptr++;
}
aptr = &Array[0];
for(n = 0; n < 5; n++)
{
printf("show array vaule = [%d]\n", (*aptr)++;
}
free(Array);
system("PAUSE");
return 0;
}
![]() |
那要如何列印出Array中的值[0][2][4][6][8]請看下例:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int n =5;
int *Array,*aptr;
Array = (int*)malloc(n*sizeof(int));
memset(Array,0,5);
aptr = Array;
for(n = 0; n < 5; n++)
{
*aptr = n*2;
aptr++;
}
aptr = &Array[0];
for(n = 0; n < 5; n++)
{
printf("show array vaule = [%d]\n", *aptr++;
}
free(Array);
system("PAUSE");
return 0;
}
取消括號以後才是對aptr位址做增加,順利得到我們要的值。
接下來再嘗試將++換到aptr前面看看會發生甚麼事情。
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int n =5;
int *Array,*aptr;
Array = (int*)malloc(n*sizeof(int));
memset(Array,0,5);
aptr = Array;
for(n = 0; n < 5; n++)
{
*aptr = n*2;
aptr++;
}
aptr = &Array[0];
for(n = 0; n < 5; n++)
{
printf("show array vaule = [%d]\n", ++*aptr);
}
free(Array);
system("PAUSE");
return 0;
}
將程式改成++*aptr,代表Array[0]裡面的值先做遞增再輸出,測試結果列印出來為[1][2][3][4][5]。
另外如果加上括號++(*aptr),測試輸出結果列印出來與上例相同。:




No comments:
Post a Comment