qzgx.net
当前位置:首页 >> C语言字符串初始化 >>

C语言字符串初始化

C语言允许用字符串的方式对数组作初始化赋值.例如:static char c[]={'c',' ','p','r','o','g','r','a','m'}; 可写为:static char c[]={"C program"}; 或去掉{}写为:static char c[]="C program"; 当对全体元素赋初值时也可以省去长度说明.例如:

初始化:定义并赋初值,分配内存,并且给了一个初值.定义:分配内存,但是没有赋值,分配的内存里可能都是0或者是随机数.

应该选achar str[] = {'g',……,'l'}; 没有给str设定有多少个字符,比如str[8],也没有在字符中{'g',……,'l'}设置结束标记"\0" 所以是错的.d项因为是"good!"字符串,所以在赋值给str[]的时候会自动根据字符串长度设置数组长度,同时在结尾加结束标记"\0"

字符串定义一般有两种方式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 *a=NULL; scanf("%s",a);定义一个变量当然就要分配内存空间的,但是,你要知道指针是很特殊的,它用来指示内存单元的.指针本身的空间和指针指示的内容是不一样的.

char data[20]执行后,data 指向一个固定的值(数组的首地址),所以不能在对data赋值,因为它是一个常量char *data;data 是一个指针变量,所以可以赋值;

是的.其实是一个习惯,因为str**类的函数,都是以'/0'作为结束符.strlen(),等等,所以习惯在末尾置'/0'

如果是指针字符串,可以直接给字符串赋值为NULL,如果不是指针字符串的话,没必要初始化,因为他们用完后就自动释放内存空间了.

字符串的存储结束需要用"\0"来标志,所以存储string六个的字符就需要7个才能正确结束了,会报错空间不够

字符串是用'\0'作为结束符的,C的话空间不够,因为加上'\0'就应该要6的空间;D的话没有存储'\0',只能说是5个字符,不算一个字符串.

网站首页 | 网站地图
All rights reserved Powered by www.qzgx.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com