char a[3]={'a','b','c'}; 不是只可以存放2个字符 另一个是\0吗

作者&投稿:尉范 (若有异议请与网页底部的电邮联系)
C语言:设有说明语句:char a='\65';则变量a A 包含1个字符 B 包含2个字符 C 包含3个字符 D 说明不合法?~

\72表示的是一个字符哦
\是转义符号,这里的72是八进制的,换成十进制为58
如果是\92那就是错误的,因为9已经超过8进制的取值范围。
1.
一般转义字符
这种转义字符,虽然在形式上由两个字符组成,但只代表一个字符。常用的一般转义字符为:
\a



\v
\b

\f
\\
\’
\”
你可能已经发现,转义字符'\\'代表的反斜杠"\"、转义字符’\’’代表的字符"'"和转义字符'\”'代表的字符"”",其本身就是可显示字符,为什么还要对它转义呢?
这是因为它们的原有的字符形式已作它用,其中,单引号用作区分字符常量的括号,双引号用作区分字符串(下面将要介绍字符串)的括号,而反斜杠本身已用来表示转义字符的开头,因此必须对它们用转义字符重新声明。
2.
八进制转义字符
它是由反斜杠'\'和随后的1~3个八进制数字构成的字符序列。例如,'\60'、'\101'、'\141'分别表示字符'0'、'a'和'a'。因为字符'0'、'a'和'a'的ascii码的八进制值分别为60、101和141。
字符集中的所有字符都可以用八进制转义字符表示。
如果你愿意,可以在八进制数字前面加上一个0来表示八进制转义字符。
3.
十六进制转义字符
它是由反斜杠'\'和字母x(或x)及随后的1~2个十六进制数字构成的字符序列。例如,'\x30'、'\x41'、'\x61'分别表示字符'0'、'a'和'a'。因为字符'0'、'a'和'a'的ascii码的十六进制值分别为0x30、0x41和0x61。
可见,字符集中的所有字符都可以用十六进制转义字符表示

有编译错误。
数组之间拷贝不能直接使用a=b,而是可以使用字符串拷贝函数strcpy。而且数组a的长度只有3,而数组b有5个字符,还不包括结尾字符。
字符串拷贝函数strcpy格式:strcpy (字符数组名1,字符数组名2) 的功能:把字符数组2中的字符串拷贝到字符数组1中。串结束标志“”也一同拷贝。字符数名2, 也可以是一个字符串常量。这时相当于把一个字符串赋予一个字符数组。
本函数要求字符数组1应有足够的长度,否则不能全部装入所拷贝的字符串。

扩展资料:
1.可以只给部分元素赋初值。当{ }中值的个数少于元素个数时,只给前面部分元素赋值。例如:static int a[10]={0,1,2,3,4};表示只给a[0]~a[4]5个元素赋值,而后5个元素自动赋0值。
2.只能给元素逐个赋值,不能给数组整体赋值。例如给十个元素全部赋1值,只能写为:static int a[10]={1,1,1,1,1,1,1,1,1,1};而不能写为:static int a[10]=1。
3.若不给可初始化的数组赋初值,则全部元素均为0值。
4.假如给全部元素赋值,则在数组说明中, 可以不给出数组元素的个数。例如:static int a[5]={1,2,3,4,5};可写为:static int a[]={1,2,3,4,5};动态赋值可以在程序执行过程中,对数组作动态赋值。这时可用循环语句配合scanf函数逐个对数组元素赋值。
参考资料:
百度百科-数组

char a[3] 是声明 a 是 char 型数组,有3个元素。
char 型数组 可以用来存放一个字符串,也可以用来存放1个1个的字符。

char a[3]={'a','b','c'}; 存放3个字符, 可以。
char a[3]="abc"; 存放字符串,字符串有4个字节,含结束符\0. 这样初始化,结束符没地方放,丢弃了。
char a[3]="ab"; 存放字符串,字符串有3个字节,含结束符\0. (提倡用法)。
char a[4]="abc"; char a[]="abc"; (提倡用法)。
-----------------------
#include <stdio.h>
int main(){
char a[3]= {'a','b','c'};
printf("%c %c %c\n",a[0],a[1],a[2]); //按字符 方式输出

printf("%s\n",a); // 按字符串方式输出
return 0;}
==============
#include <stdio.h> int main(){char a[3]="abc";
printf("%c %c %c\n",a[0],a[1],a[2]); //按字符 方式输出
printf("%s\n",a); // 按字符串方式输出
return 0;}
MS VC++ 6.0 输出都是:
a b cabc

确实是只可以存放2个字符,最后一个是零。你说的没有错呀=。=
字符数组最后一项一定要是'\0'
你这么写会报错。error c2078: error C2078: too many initializers就是初始值设定太多。
3,表示的是三个字符。

不 你理解 有点 问题 当 存储的是 字符串 的时候
才会自动 在后面加上 \0
而字符串的标志是 " "
除此之外 都当做 存储 单个 字符 处理
就和 整型 数组一个道理了。。。。
3 是 三个 字符

c语言中一个字符就是一个字节 你这样写可以 有什么疑问??


端州区15928256135: C语言中的 char a【3】 是定义一个字符串麽? a【3】表示什么~ -
释丽浦惠: c语言中没有字符串的数据类型,都是定义一个数组,然后利用数组存储字符串的每一个字符!!!另外他与字符串有一定的区别,字符串最后一个位置存的是'\0',而字符数组却没有!!!如果用数组存储一个字符串,在其最后没有'\0'的情况下,使用printf输出的时候会出现乱码的,因为printf是以'\0'作为结束标志的,遇不到'\0'就出现了越界访问!!!不明白的可以交流下啊!!c编程高手团队正在招新,有意者速速行动,一起学习,一起努力!!

端州区15928256135: char a='3'什么意思? -
释丽浦惠: char是用来定义字符型变量的,在这里定义变量a,a='3'的意思是:将字符3初始化给(亦称赋值给)a 在这里,3不是作为一个数字3,而是作为一个字符,比如'b','c','d'等等字母符号的形式

端州区15928256135: char a[ ][3]={"a","1"};表示什么 -
释丽浦惠: char型二维数组, 在定义且初始化的时候可以不定义行数, 编译器根据初始化个数来确定多少行.你这相当于定义了char a[2][3];这样一个二维数组; 其中a[0]里面是字符串"a", 包括\0结束符 其中a[1]里面是字符串"1", 包括\0结束符, 可以直接printf("%s", a[0]); 或printf("%s", a[1]);

端州区15928256135: c语言中char a[ ][3]={'123','1'} 是对的吗?如果是错的 怎么错 -
释丽浦惠: 语法上是允许的.char a[ ][3]={'123','1'}; 声明 a 是 char 型 2 维数组,并初始化.第一维不定,由初始化值确定,第二维大小是 3.根据初始化,可以定出 第一维是 1.初始化用的是字符常量,但 '123' 数值超界,丢弃溢出部分,留下 '3'.所以 , 等于声明了: char a[1][3]={'3','1','\0'}; 若打印:int i; for (i=0;i输出格式里加了一条竖线,为了让你看见空格.

端州区15928256135: c语言char a[3]={"a","b","c"};能这样赋值吗? -
释丽浦惠: 用""会被当成是字符串.然后自动添加一个字符串结束符.... 所以不能赋值给char型变量.a[3][3]={"a","b","c"};这样是可以的. 它把a b c都当成一个字符串.

端州区15928256135: char a[3]={"123"}有什么语法错误 -
释丽浦惠: char a[3]={'1','2','3'};"123"是字符串 用字符串的话,就是memcpy(a,"123",3);

端州区15928256135: 在c语言中char a[]={'a','b','c'}和char a[]="abc"有什么区别 它们各在内存里占多少和字节 -
释丽浦惠: char a[]={'a','b','c'} 这是一个字符数组,占3个字节. char a[]="abc" 则不同,它是一个字符串,最后还有一个'\0'结束符,占4个字节

端州区15928256135: char a[ ][3]={{'*',' ','*'},{' ','*'},{'*',' ','*'}}; 这句话是什么意思,求解释. -
释丽浦惠: 定义char类型二维数组. 如果是 char a[N][M] ,就可以看成 N个M维数组. 后面大括号里面{}的每一个元素是一个M维数组.char a[][3] 就是 N个3维数组. N空出来了,由后面大括号里面有多少个数组来决定N.{{'*',' ','*'},{' ','*'},{'*',' ','*'}}. 即3个3维数...

端州区15928256135: c语言中怎么把字符型转化为整型,例如 char a[3]=123; int i; for(i=0;i<a[i];i++) 要让for语句能够实现. -
释丽浦惠: #include "stdio.h"#include "string.h" void main() { char a[4]="123"; //注意字符串有结束符,要占一个字节 int n=0; int i; for(i=0;i<strlen(a);i++) n=n*10+a[i]-'0'; printf("%d",n); }

端州区15928256135: 请教,请问在C语言中,怎么样把一个字符数组char a[3]="ab"转换成char *指针指向的字符串? -
释丽浦惠: suppose you want to this:char a [ 3 ] = "ab"; char * p ; p = (char * ) malloc ( 10); // allocate space for p memset ( p , 0 , 10); // init buffer with 0 strcpy ( p, "cd"); // copy "cd" into p buffer.a[0] = *p; // 'a' changed to 'c' a[1] = *(p+1); // 'b' changed to 'd'

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网