占2个字节
字符常量是用单引号括起的一个字符
且字符常量在内存中存储的是该字符在unicode字符集中的排序位置,即整数
eg:char
x='a'
内存x中存储的是字符a在unicode字符集中的排序位置97
因此允许将上面的语句写成char
x=97;对于程序中的string型字段,SQLServer中有char、varchar、nchar、nvarchar四种类型来对应(暂时不考虑text和ntext),开建立数据库中,对这四种类型往往比较模糊,这里做一下对比。
1有var前缀的,表示是实际存储空间是变长的,varchar,nvarchar
所谓定长就是长度固定的,当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面填充,使长度达到相应的长度;而变长字符数据则不会以空格填充,比较例外的是,text存储的也是可变长。
2n表示Unicode字符,即所有字符都占两个字节,nchar,nvarchar
字符中,英文字符只需要一个字节存储就足够了,但汉字众多,需要两个字节存储,英文与汉字同时存在时容易造成混乱,Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。
3基于以上两点来看看字段容量
char,varchar
最多8000个英文,4000个汉字
nchar,nvarchar
可存储4000个字符,无论英文还是汉字
4使用(个人偏好)
a如果数据量非常大,又能100%确定长度且保存只是ansi字符,那么char
b能确定长度又不一定是ansi字符或者,那么用nchar;
c对于超大数据,如文章内容,使用nText
d其他的通用nvarchar
1 c语言中,char 代表 字符指针类型,当其指向一个字符串的第一个元素时,它就可以代表这个字符串了
2 示例
#include<stdioh>int main(){
char str = "learn c";
printf("%s\n", str);
getchar();
return 0;
}
/运行结果是
learn c
/
3 分析
在char str="learn c";中,"learn c"是长度为8的字符数组常量,其最后一个元素是'\0',而这句代码执行的结果是将str指向了"learn c"的第一个字符'l',str后面的连续内存依次存放'e','a','r','n',' ','c','\0'
4 扩展
c语言中的字符串是用字符数组来表示的,只是c语言规定了一个字符串结束标志,即字符'\0',也就是遇到字符'\0'时,这个字符串就结束了
char name[3];
说明name这个数组每个单元存储的是 char 类型也就是字符类型的数据。
string name[3];
说明name这个数组每个单元存储的是 string 类型也就是字符串类型的数据。
"张三" “李四” 是字符串类型的
非要用char 类型的可以定义如下:
char name[3][3] = {"张三","李四","王五"};
//分布如下
name[0][0]//张
name[0][1]//三
name[0][2]//\0
name[1][0]//李
name[1][1]//四
name[1][2]//\0
name[2][0]//王
name[2][1]//五
name[2][2]//\0
name[0]//张三\0
name[1]//李四\0
name[2]//王五\0
用法如下: char 变量名列表;char 是C++的一种基本变量类型,表示一个字符,占用一个字节的内存空间
可以和int 进行类型转换
char类型的数组是一个字符串,由于char数组的 *** 作相对麻烦,在C++中字符串的 *** 作引入了新的数据类型 string,应用string需要#include <string>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)