大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
1、直接逐个初始化字符数组:
成都创新互联公司从2013年成立,是专业互联网技术服务公司,拥有项目网站设计制作、做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元海陵做网站,已为上家服务,为海陵各地企业和个人服务,联系电话:18980820575
字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素。
char str[10]={ 'I',' ','a','m',' ',‘h’,'a','p','p','y'};
注意:如果花括号中提供的字符个数大于数组长度,则按语法错误处理;若小于数组长度,则只将这些字符数组中前面那些元素,其余的元素自动定为空字符(即'\0'
)。
2、用字符串常量来初始化字符数组:
在c语言中,将字符串作为字符数组来处理。因此可以使用字符串来初始化字符数组。
char str[]={"I am happy"};
也可以省略花括号。
char str[]="I am happy";
但是,上述这种字符数组的整体赋值只能在字符数组初始化时使用,不能用于字符数组的赋值,字符数组的赋值只能对其元素一一赋值,下面的赋值方法是错误的。
char str[];
str="I am happy";//错误,字符数组的赋值只能按元素一一赋值
chardata[20];
data="hello";
先解释这个为什么是错的,因为data="hello";实际上就是data[0]="hello";是data字符数组的首个字符,很显然不能放字符串。
至于两者的区别,后者可以可以更方便通过指针来访问修改删除元素。
char*data;
data="hello";这句中的data是指针变量,指向"hello"这个字符串在内存中的首地址。
字符串定义一般有两种方式
1. 字符数组方式
char s[100];
2.字符指针方式
char * s;
s=(char *)malloc(100);
3.初始化,如果是数组可以在定义的时候初始化
char s[100]={0};
也可以 memset( s, 0, sizeof(s) );
如果是指针 memst( s, 0, 100 );
有时候也可以很简单的只把第一个字符初始化,如s[0]='\0',或者 *s='\0';
应该选a
char
str[]
= {'g',……,'l'};
没有给str设定有多少个字符,比如str[8],也没有在字符中{'g',……,'l'}设置结束标记"\0"
所以是错的。
d项因为是"good!"字符串,所以在赋值给str[]的时候会自动根据字符串长度设置数组长度,同时在结尾加结束标记"\0"
可以使用memset函数将字符串数组中所有元素全部设置为\0即可。
函数原型:void
*memset(void
*s,
int
ch, size_t n);
函数说明:将s中前n个字节
(typedef
unsigned
int
size_t
)用
ch
替换并返回
s
。
示例:
#include stdio.h
#include string.h
int main()
{
char buf[256] = "hello world"; //buf字符数组初始化
printf("%d\n", strlen(buf));
memset(buf, 0x00, sizeof (char) * 256); //全部设置为0x00即\0字符
printf("%d\n", strlen(buf));
return 0;
}