指针和数组 字符串

#include <stdio.h>

/*

 1.数组元素的访问方式

 int ages[5];

 int *p;

 p = ages;

 1> 数组名[下标]  ages[i]

 2> 指针变量名[下标] p[i]

 3> *(p + i)

 

 2.指针变量+1,地址值究竟加多少,取决于指针的类型

  int *   4

  char *  1

  double * 8

 */

void change(int array[]);

 

int main()

{

    // 20个字节

    int ages[5] = {10, 11, 19, 78, 67};

    

    change(ages);

    

    return 0;

}

 

// 利用一个指针来接收一个数组,指针变量array指向了数组的首元素

void change(int *array)

{

    printf("%d\n", array[2]);

    //printf("%d\n", *(array+2));

}

 

/*

void change(int array[])

{

    int s = sizeof(array);

    

    printf("%d\n", s);

}*/

 

void test()

{

    double d = 10.8;

    double *dp;

    dp = &d;

    

    printf("dp = %p\n", dp);

    printf("dp + 1 = %p\n", dp + 1);

    

    int ages[5] = {10, 9, 8, 67, 56};

    

    int *p;

    // 指针变量p指向了数组的首元素

    p = &ages[0];

    // 数组名就是数组的地址,也是数组首元素的地址

    //p = ages;

    

    /*

     p ---> &ages[0]

     p + 1 ---> &ages[1]

     p + 2 ---> &ages[2]

     p + i ---> &ages[i]

     */

    

    //printf("%d\n",  *(p+2));

    

    printf("%d\n",  p[2]);

    

    /*

     for (int i = 0; i<5; i++) {

     printf("ages[%d] = %d\n", i, *(p+i));

     }*/

    

    

    //    printf("%p\n", p);

    //    printf("%p\n", p + 1);

    //    printf("%p\n", p + 2);

}

 

 

/*

 1.常量区

 存放一些常量字符串

 

 2.堆

 对象

 

 3.栈

 存放局部变量

 

 掌握:

 定义字符串的2种方式

 1> 利用数组

 char name[] = "itlance";

  * 特点:字符串里面的字符是可以修改的

  * 使用场合:字符串的内容需要经常修改

 

 2> 利用指针

  char *name = "itcast";

  * 特点:字符串其实是一个常量字符串,里面的字符是不能修改

  * 使用场合:字符串的内容不需要修改,而且这个字符串经常使用

 */

// 定义字符串数组

void test2()

{

    char *name = "jack";

    

    //int ages[5];

    

    // 指针数组(字符串数组)

    char *names[5] = {"jack", "rose", "jake"};

    

    // 二维字符数组(字符串数组)

    char names2[2][10] = {"jack", "rose"};

}

 

// 定义字符串

void test()

{

    // 字符串变量

    char name[] = "it";

    name[0] = 'T';

    

    //printf("%s\n", name);

    

    

    // "it" == 'i' + 't' + '\0'

    // 指针变量name2指向了字符串的首字符

    

    // 字符串常量

    char *name2 = "it";

    

    char *name3 = "it";

    

    //*name2 = 'T';

    

    //printf("%c\n", *name2);

    

    printf("%p\n%p\n", name2, name3);

    

    //printf("%s\n", name2);

}

posted @ 2016-03-28 09:49  lance.xiang  阅读(131)  评论(0)    收藏  举报