C++ 字符数组
来源:互联网 发布:淘宝收藏转移 编辑:程序博客网 时间:2024/05/16 08:46
字符数组初始化方法:
//1 大{}号法 初始化列表
//数组初始化有2种方法 默认元素个数、指定元素个数
char buf1[] = {'a', 'b', 'c', 'd', 'e'}; //若没有指定长度,默认不分配零
//若指定长度,不够报错;buf长度多于初始化个数,会自动补充零
char buf2[6] = {'a', 'b', 'c', 'd', 'e'};
如果用字符串来初始化字符数组,字符串数组结尾的\0也会读进去,C语言可以在字符数组尾部加\0来模拟字符串
char buf3[] = {"abcde"}; //结论:会补充零
char buf4[] = "abcde";//buf3,buf4的维度都为6
strlen和sizeof的区别,想强调一下\0
strlen()求字符串的长度,注意字符串的长度不包含\0
sizeof(类型)字符串类型,的大小,包括\0;
字符数组访问:
下标法和指针法, 注意字符数组名是个常量指针,代表字符数组首元素的地址,不代表整个数组的,具体在偏移可以测出来, 另外一个方面是访问数组不要越界。
字符串数组和字符串指针区别:
<1> 初始化的字符串数组存储在栈中,可以改变其值。<2> 初始化的字符串常量指针存储在静态常量区,不能修改其值。
- View Code
- 1 #include<iostream.h>
- 2 #include<ctype.h>
- 9 int strlower(char *string)
- 10 {
- 11 if(string==NULL)
- 12 {
- 13 return -1;
- 14 }
- 15
- 16 while(*string)
- 17 {
- 18 if(isupper(*string))
- 19 *string=tolower(*string);
- 20 string++;
- 21 }
- 22 *string='\0';
- 23 return 0;
- 24 }
- 47 void main()
- 48 {
- 49 char *test="ABCDEFGhijklmN";
- 50 strlower(test);
- 51 cout<<test<<endl;
- 52 }
数组名作为函数参数原理:
在C语言中,我们没有办法可以将一个数组作为函数参数直接传递。如果我们使用数组名作为参数,那么数组名会立即被转换为指向该数组第1个元素的指针。例如,下面的语句:
char hello[] = "hello";
声明了hello是一个字符数组。如果将该数组作为参数传递给一个函数,
printf ("%s\n", hello);
实际上与将该数组第1个元素的地址作为参数传递给函数的作用完全等效,即:
printf ("%s\n", &hello[0]);
因此,将数组作为函数参数毫无意义。所以,C语言中会自动地将作为参数的数组声明转换为相应的指针声明。也就是说,像这样的写法:
int strlen (char s[])
{
...
}
与下面的写法完全相同:
int strlen (char *s)
{
...
}
- C 字符数组 字符指针
- C语言字符数组
- C字符数组赋值
- C字符数组赋值
- C语言----字符数组
- C语言字符数组
- C基础:字符数组
- C字符数组
- c语言字符数组
- 字符串,字符数组(c/c++)
- C/C++_log2000_C++字符数组
- C/C++"字符与字符数组"
- C语言字符指针和字符数组
- C/C++ 字符指针、字符数组用法
- C语言字符串、字符数组
- C语言数组、指针、字符
- C语言字符数组sizeof
- c语言的字符数组
- 从0开始学习 GitHub 系列之「Git 速成」
- last_insert_id函数
- 栅栏染色
- 每日一得--Nginx+Tomcat+Redis集群Session共享
- android TextView多行文本(超过3行)使用ellipsize="end"属性无效问题的解决方法
- C++ 字符数组
- mysql数据库知识点总结
- iOS围绕某点缩放或旋转的AnchorPoint的设定
- HTML页面布局基础
- java 程序员进阶过程
- linux--sshd
- QQ登陆
- IOS 渐变色CAGradientLayer的一些属性解析
- Unix环境高级编程(三)信号专题(1)