字符串字符数组的赋值
2017-07-25 14:02
127 查看
字符数组的定义与初始化
Char str[10] = {‘a’,‘b’,‘c’,‘d’,‘e’};
如果说提供的字符的个数大于数组的长度,就按语法错误处理,如果小于数组的长度,不够的位置用空字符补全’\0’
字符数组与字符串
1)、C语言中将字符串当做字符数组来处理,字符串的结束标志是‘\0’,而前面的所有字符组成字符串,不算’\0’
2)、对于字符串常量的话,系统会自动在字符串的结尾加’\0’,作为结束符,但是内存大小=字符的个数+1(’\0’)
备注:’\n’的ACSS是0的字符,ASCII是0的字符是不可显示,它只是用来辨别字符串结尾的标志
实例:字符串数组的初始化
char str[] = {“abc def”};
char str[] = “abc def”;
但是上面的例子只能用于初始化一个字符数组,并不能用于赋值,像下面的例子就是一个错误:
Char str[];
Srt=”abc def”;
所以字符数组只能对其元素一个一个赋值,除此之外字符串的大小是字符个数+1因为系统自动加’\0’
下面的例子与上面的初始化等价
Char str[] = {‘a’,’b’,’c’,’ ’,’d’,’e’,’f’,’\0’};
与Char str[] = {‘a’,’b’,’c’,’’,’d’,’e’,’f’}的大小不同;
字符串的表示形式
C语言中存放字符串的方式:
1)、字符数组
Charstr[] = “abc def”;
2)、字符指针指向一个字符串
Char*str = “abc def”;
说明一下 str此时不是一个变量了,事实上它在内存的常量区,str指针指向该块内存,将字符串的首地址赋给srt
字符串的输出方式
printf(“%s\n”,str);这是给出了字符串的首地址,系统输出字符数据后,然后然后str自动+1指向下一个字符,直到遇到字符标志’\0’
字符串的赋值方式
再此必须明确字符数组里放的是数组的成员,而字符指针只是放的指向字符串的首地址
其次字符数组绝对不能赋值
对字符数组只能对各个元素赋值,不能用以下方法对字符数组赋值
char str[14];
str="I love you"; (但在字符数组[b]初始化时可以,即char str[14]="I love you";)[/b]
数组名是常量,故不能直接赋值,故只能用strcpy(因数组已提前分好内存了)
而对字符指针变量,采用下面方法赋值:
char* a;
a="I love you";
指针是变量,故可直接赋值,但不能用strcpy(因指针没有分配内存,除非提前分配好如上)
Char buf[10];
Char *str=buf;
Strcopy(str,”I love you”)
字符数组的定义与初始化
Char str[10] = {‘a’,‘b’,‘c’,‘d’,‘e’};
如果说提供的字符的个数大于数组的长度,就按语法错误处理,如果小于数组的长度,不够的位置用空字符补全’\0’
字符数组与字符串
1)、C语言中将字符串当做字符数组来处理,字符串的结束标志是‘\0’,而前面的所有字符组成字符串,不算’\0’
2)、对于字符串常量的话,系统会自动在字符串的结尾加’\0’,作为结束符,但是内存大小=字符的个数+1(’\0’)
备注:’\n’的ACSS是0的字符,ASCII是0的字符是不可显示,它只是用来辨别字符串结尾的标志
实例:字符串数组的初始化
char str[] = {“abc def”};
char str[] = “abc def”;
但是上面的例子只能用于初始化一个字符数组,并不能用于赋值,像下面的例子就是一个错误:
Char str[];
Srt=”abc def”;
所以字符数组只能对其元素一个一个赋值,除此之外字符串的大小是字符个数+1因为系统自动加’\0’
下面的例子与上面的初始化等价
Char str[] = {‘a’,’b’,’c’,’ ’,’d’,’e’,’f’,’\0’};
与Char str[] = {‘a’,’b’,’c’,’’,’d’,’e’,’f’}的大小不同;
字符串的表示形式
C语言中存放字符串的方式:
1)、字符数组
Charstr[] = “abc def”;
2)、字符指针指向一个字符串
Char*str = “abc def”;
说明一下 str此时不是一个变量了,事实上它在内存的常量区,str指针指向该块内存,将字符串的首地址赋给srt
字符串的输出方式
printf(“%s\n”,str);这是给出了字符串的首地址,系统输出字符数据后,然后然后str自动+1指向下一个字符,直到遇到字符标志’\0’
字符串的赋值方式
再此必须明确字符数组里放的是数组的成员,而字符指针只是放的指向字符串的首地址
其次字符数组绝对不能赋值
对字符数组只能对各个元素赋值,不能用以下方法对字符数组赋值
char str[14];
str="I love you"; (但在字符数组[b]初始化时可以,即char str[14]="I love you";)[/b]
数组名是常量,故不能直接赋值,故只能用strcpy(因数组已提前分好内存了)
而对字符指针变量,采用下面方法赋值:
char* a;
a="I love you";
指针是变量,故可直接赋值,但不能用strcpy(因指针没有分配内存,除非提前分配好如上)
Char buf[10];
Char *str=buf;
Strcopy(str,”I love you”)
相关文章推荐
- 数组与字符串、字符指针与其他类型指针、赋值参数、指针参数以及引用参数、函数指针
- 学习笔记1:不能用字符串给字符数组赋值
- 通过strstr函数来深入理解逐个给字符数组赋值和用字符串给字符数组赋值的区别
- 字符数组(C风格字符串)的初始化和赋值
- 《c和指针》3.1.3 二 、字符串常量 :不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组赋值
- 字符数组(C风格字符串)的初始化和赋值
- 关于动态存储分配函数的调用,在已经过排序的数组中查找及删除内容的操作,余数的分析,删除字符数组中的空格,对链表的逆置,在源字符串中查找子字符串的个数,函数指针以及函数的调用,循环赋值带来的问题以及插入
- 结构体中字符数组赋值字符串问题
- c语言中,字符数组与字符串赋值问题
- 把字符串赋值给字符数组
- C++字符串数组赋值与单个字符赋值区别
- 漫步IOS--格式化输出字符、运算符,字符串数组赋值。
- 如何理解不能用字符串给字符数组赋值
- 不能用字符串给字符数组赋值
- 程序猿之---C语言细节14(字符串数组内存分配细节‘\0’空字符、字符串数组赋值细节、字符串换行连接和下标)
- c中给字符数组,字符串指针赋值的方法总结
- c中给字符数组,字符串指针赋值的方法总结
- 将S所指的字符串中下标为偶数同时ASCⅡ值为奇数的字符删除,所指串中剩余的字符形成新的串放在t所指的数组中
- IOS字符串按特定字符拆分成数组和拼接以及一些基本操作
- C++基础之字符数组和字符串