C语言指针和数组

#include <stdio.h>
int main()
{
    /*********************************************
     *
     *  指针和数组:
     *     定义数组:数组名就是数组第一个元素的地址
     *      int ages[5];
     *      int *p;
     *      p = ages;
     *     访问数组元素的方法:
     *     1、数组名[下标]  ages[i]
     *     2、指针变量名[下标] p[i]
     *     3、*(p + i)
     *
     *  指针变量+1,地址值究竟加多少,取决于指针的类型
     *  int *   4
     *  char *  1
     *  double * 8
     *
     **********************************************/
     int arr[5] = {1,2,3,4,5};
     //指针变量此时指向的是数组的首元素
     int *p = arr;
     printf("数组名[下标]访问数组元素:\n");
     for (int i=0; i<5; i++)
     {
         printf("arr[%d] = %d\n", i, arr[i]);
     }
     printf("指针变量名[下标]访问数组元素:\n");
     for (int i=0; i<5; i++)
     {
         printf("arr[%d] = %d\n", i, p[i]);
     }
     printf("*(p + i)访问数组元素:\n");
     for (int i=0; i<5; i++)
     {
         printf("arr[%d] = %d\n", i, *(p + i));
     }

     printf("指针变量+1,地址值究竟加多少,取决于指针的类型:\n");

     int c = 10;
     float d = 11.0f;
     double e = 12.0;
     char f = 'A';
     int *pi = &c;
     float *pf = &d;
     double *pe = &e;
     char *pch = &f;
     printf("int类型的指针加1的地址:\n");
     printf("     int类型当前地址是:%p\n",&c);
     printf("     int类型加1后地址是:%p\n",pi + 1);

     printf("float类型的指针加1的地址:\n");
     printf("     float类型当前地址是:%p\n",&d);
     printf("     float类型加1后地址是:%p\n",pf + 1);

     printf("double类型的指针加1的地址:\n");
     printf("     double类型当前地址是:%p\n",&e);
     printf("     double类型加1后地址是:%p\n",pe + 1);

     printf("char类型的指针加1的地址:\n");
     printf("     char类型当前地址是:%p\n",&f);
     printf("     char类型加1后地址是:%p\n",pch + 1);

     return 0;
}
数组名[下标]访问数组元素:
arr[0] = 1
arr[1] = 2
arr[2] = 3
arr[3] = 4
arr[4] = 5
指针变量名[下标]访问数组元素:
arr[0] = 1
arr[1] = 2
arr[2] = 3
arr[3] = 4
arr[4] = 5
*(p + i)访问数组元素:
arr[0] = 1
arr[1] = 2
arr[2] = 3
arr[3] = 4
arr[4] = 5
指针变量+1,地址值究竟加多少,取决于指针的类型:
int类型的指针加1的地址:
     int类型当前地址是:0022feb8
     int类型加1后地址是:0022febc
float类型的指针加1的地址:
     float类型当前地址是:0022feb4
     float类型加1后地址是:0022feb8
double类型的指针加1的地址:
     double类型当前地址是:0022fea8
     double类型加1后地址是:0022feb0
char类型的指针加1的地址:
     char类型当前地址是:0022fea7
     char类型加1后地址是:0022fea8

 

posted @ 2014-01-22 18:09  天之涯0204  阅读(195)  评论(0编辑  收藏  举报