C 定义char a[3][5],那a[0][0]中存放的是字符串还是字符,内存空间怎么安排的,最多能存放多少个

如题所述

第1个回答  2012-12-18
char a[3][5]就是在内存中分配了35个字节的空间
a就是这段空间的首地址,相当于&a[0][0]
a[0][0]就是第一个字节里面的元素,是一个char型的追问

能用字符串赋值吗,怎么用

追答

字符串复制要用strcpy
strcpy(a[0],"hello")就是把h赋值给a[0][0],e赋值给a[0][1],l赋值给a[0][2]......

本回答被提问者和网友采纳
第2个回答  2012-12-18
a[0][0]是char类型,所以指向的是字符

char a[3][5]定义了3x5 = 15个字符空间,空间怎么安排可以查看二维数组定义。
不可以使用字符串给整体赋值,但可以使用字符串给a[0]/a[1]/a[2]赋值
例如 strcpy(a[0], "abcde", 5);
第3个回答  2012-12-18
字符。。
最多能放15个字符。。
三个字符数不超过5的字符串。追问

不能赋一个14个字符的字符串吗,怎么理解

追答

地址空间是连续的,所以是可以直接赋值14字符给它。
不过不能直接赋值字符串,要用strcpy或者一个字符一个字符给。

追问

在定义时就直接赋值

追答

不行,因为给一个字符数组赋值超过其容纳是不合法的,其实你想给它赋值14个字符本身就是不合法的,不过它存的时候是按连续空间存的,所以能往后存,打印的时候也是顺序查下一个直到'\0'为止。

追问

怎么超过其容纳量了,a[5]不是可以直接赋字符串吗

追答

a[5]是可以,不过只能给他赋值4个字符,因为'\0'需要占一位,
我知道你的想法是:
char a[3][5]={"abcde","abcde","abcde"};
你可能认为a就变成"abcdeabcdeabcde".
不过这是不合法的,因为根本不能给它赋值5个字符。
必须在结尾加上结束字符,所以打印也是一个个查找结束字符。

第4个回答  2012-12-18
在c语言中只有字符变量,而没有字符串变量,意思就是一个变量只能存储一个字符,而不是一个串。有不懂的继续问追问

那每一个存储一个字符,组合起来是不是相当于存储最多15个字符的字符串

第5个回答  2012-12-31
字符
a[0] a[1] a[2]
[0] [1] [2] [3] [4] [0] [1] [2] [3] [4] [0] [1] [2] [3] [4]

C 定义char a[3][5],那a[0][0]中存放的是字符串还是字符,内存空间怎么...
char a[3][5]就是在内存中分配了35个字节的空间 a就是这段空间的首地址,相当于&a[0][0]a[0][0]就是第一个字节里面的元素,是一个char型的

C++中定义字符型数组问题
定义char a[5],则说明,a是个字符数组,在内存中占五个字节空间 如果用a来存储字符串,则最多只能有4个有效字符,必须给\\0留个空间。计算a的长度与a的大小是不同的概念 a按字符串来算长度是从a这个地址开始,计数到\\0字符,这之间的字符个数是字符串a的长度。一般常用strlen()函数来获取字符...

c语言中char类型如何存放多个字符
char只能存放一个字符,你可以定义一个数组来单个存放 非要存放多个字符请用字符串 如果是要存放单个汉子,请用char a[2]="的"来存放 因为一个汉字占2个字节

C语言,char a[3],是不是实际这个字符数组只能存两个字符,剩下一个是\\...
char a[3]可以存3个字符,如果用它存字符串那么这个字符串的长度最长为2。

C语言中字符数组只能存放字符串?
字符数组本意就是是指用来存放字符数据的数组。字符数组的元素是字符类型的。字符数组用于存放字符或字符串。C语言中字符数组的一般形式为: char 数组名[数据长度] 。例如:char a[10]; a[0]='0'; a[1]=' 1'; a[2]='2'; a[3]='3'; a[4]='4'; a[5]='5'; a[6]=' 6'; ...

C语言中,关于字符串长度与字符数组长度的问题。
1楼正解,你在初始化时给数组a赋了3个值,所以其实a的类型应该是 char a[3],数组长度为3,。而字符串就不一样了,他必须以‘\\0’结尾,你的 ‘a’ ‘b’ ‘c’存储在一个连续的地址上,字符串的长度是从‘a’的地址开始一直计数,当读到‘\\0’时结束,虽然你没有用到‘c’后面的...

...c语言中char a[2]中的2是什么意思 是指能输入的最大字符数还是什么...
表示字符型数组a中可以存放2个字符,第1个字符用a[0]访问,第2个字符用a[1]访问,最大下标可以用0~(2-1)范围的。比如a[100]合法下标范围是0~99;当a需要保存字符串时,需要注意,字符串必须以0值结尾,表示成字符就是'\\0',而且这个0不算在字符串中的字符,那么你用a数组最多只能保存n-...

c语言问题,如果char a[20],a[0]='\\0'和memset(a,0,sizeof(a)
首先,你看看memset函数的介绍void memset(void s,int ch,size_t n);其次,memset(a,0,sizeof(a))函数是将这个数组中所有元素都设置为0.也就是每一个a[i]都会变为0000 0000 而你的a[0]='\\0'只是将a[0]变为了0000 0000,其他的都没有变,虽然所储存的字符串都是空字符串,但从内存上...

c语言中字符型数据在内存中的存储形式是?
字符型数据在内存中储存的是它的ASCII码值,它是一个字节,所有数据类型在内存中都是以0和1代码二进制储存的,这个原则不会变。在C语言中,char型数据是将一个字符常量放到一个字符变量中,并不是把该字符本身放到内存单元中去,而是将该字符的相应的ASCII代码放到存储单元中。编码中,一个汉字字符...

我想问一个关于c语音编程的问题,就是我知道这个char a[5][20]字符...
你好,表示字符型数组a中可以存放2个字符,第1个字符用a[0]访问,第2个字符用a[1]访问,最大下标可以用0~(2-1)范围的。比如a[100]合法下标范围是0~99;当a需要保存字符串时,需要注意,字符串必须以0值结尾,表示成字符就是'\\0',而且这个0不算在字符串中的字符,那么你用a数组最多只能...

相似回答