#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 ",name1); char *name2 = "abcd"; char *name3 = "abcd"; printf("name2的地址是%p,name3的地址是%p ", name2, name3); return 0; }
数组定义的字符串:Abcd
name2的地址是0040a081,name3的地址是0040a081