#include <string.h>标签:name,基础,char,地址,name2,printf,字符串,size From: https://blog.51cto.com/u_21817/6066903
#include <stdio.h>
int main() {
char name[] = "mhm";
char name2[] = {'1', '2'};
printf("%s\n", name);//mhm
printf("%s\n", name2);//12mhm,说明从低地址一直往高地址读,一直读到\0为止
printf("%p\n", name);//*******c68
printf("%p\n", name2);//********c66
//通过以上俩地址,可以看出,name先分配地址,位c68,c69,c70,c71,共4位,包括最后一位隐藏的\0
//name2分配地址位:c66,c67
//字符和数字分配内存地址不一样,数字全部是从高地址往低地址分配,字符串的第一个字节在低地址
printf("%s\n", &name2[1]);//2mhm 从name2的第1个地址开始读,即从‘2’开始读
char name3[] = "mhmlove\0yy";
printf("%s\n", name3);//mhmlove,说明,到\0就结束了
char name4[] = {'y', 'y'};
printf("%s\n", name4);//yymhmlove,说明,从低地址往高地址寻址,到\0就结束了
//一个汉字为3个字符
int size = strlen("我");// size为3 一直数,一直数到\0结束
printf("%d\n", size);
size = strlen("我123");// size为6 一直数,一直数到\0结束
printf("%d\n", size);
size = strlen(name3);//size为7,因为到mhmlove就结束了
printf("%d\n", size);
//单独输出字符,不是字符串
printf("%c\n", name[2]);//输出m
return 0;
}