字符串学习笔记

1.字符串初始化是否会在结尾添\0的问题

1.1

   char str1[] ="12345";

   会自动在结尾处加上'\0'

1.2

char *str1 = "12345";

   会加上'\0';

1.3

char str1[] = {'1','2','3','4','5'};

   不会加上'\0'

2字符串名sizeof的大小

char p[] = "hello"

sizeof(p)  =6;  计算数组的大小

char *p = "hello"

sizeof(p)  = 4;  计算指针的大小

3.二维数组的首地址

int a[3][4];

a + 1 = a + 4*sizof(int);

&a + 1 = a + 12*sizof(int);

   

4. char str[]=”wuhao”和 char *str=”wuhao”的区别

4.1char str[] = "wuhao"; 

"wuhao"  存储在堆或者栈中.因此可以对单个值进行修改

Str[1] = ‘a’; //正确

Str[] = “guliangjin”//错误,数组只能在初始化整体赋值,在之后都不能再整体赋值   

4.2 char *str = "wuhao";  

"wuhao" 这种定义方式为字符串常量,存储在静态数据区. Str[1] = ‘a’; //错误, 不能改变常量的值.

Str = “guliangjin”//正确,指针变量str并不是常量,所以可以更改指向的地址

猜你喜欢

转载自blog.csdn.net/qq_28818443/article/details/80523293
今日推荐