C语言指针和字符串

#include <stdio.h>
int main()
{
    /*********************************************
     * 内存:
     *   1.常量区
     *     存放一些常量字符串,这些字符串可以缓存,当再次定义相同的字符串时,
     *     直接可以使用。这样的字符串是不允许修改的
     *   2.堆
     *     存放对象
     *   3.栈
     *     存放局部变量
     *
     * 指针和字符串:
     *     定义字符串的2种方式
     *       1> 利用数组
     *           char name[] = "abcd";
     *           * 特点:字符串里面的字符是可以修改的
     *           * 使用场合:字符串的内容需要经常修改
     *       2> 利用指针
     *           char *name = "abcd";
     *           * 特点:字符串其实是一个常量字符串,里面的字符是不能修改
     *           * 使用场合:字符串的内容不需要修改,而且这个字符串经常使用
     *           * name指向的是字符串"abcd"第一个元素的地址,也就是a的地址
     *
     *    指针数组(字符串数组):指针数组他是一个数组,但是数组的每个元素是指针
     *     char *names[5] = {"jack", "rose", "jake"};
     *    二维字符数组(字符串数组)
     *     char names2[2][10] = {"jack", "rose"};
     **********************************************/
    char name1[] = "abcd";
    name1[0] = 'A';
    printf("数组定义的字符串:%s\n",name1);
    char *name2 = "abcd";
    char *name3 = "abcd";
    printf("name2的地址是%p,name3的地址是%p\n", name2, name3);
     return 0;
}
数组定义的字符串:Abcd
name2的地址是0040a081,name3的地址是0040a081

 

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