C语言,定义中文二维数组问题?
本文介绍了C语言,定义中文二维数组问题?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
char levelNames[5][10] = {"贵人"}; 为什么定义了二维数组,却赋值为一维数组内容?
解决方案
首先,在C语言里,所谓的数组,都是栈里的一段连续空间,不管几维数组,都可以看成和一维数组一样的结构,因为空间都是连续的。
我们都知道,int a[4]
,这个数组,在取值是可以使用 *
,比如 a[2]
就是 *(a + 4)
。
那么,当我们定义一个二维数组,int b[2][3]
,a[1][2]
我们也可以写成 *(b + 1 * 3 + 2)
。
所以你的问题,其实是,当你定义了一个字符型的二维数组时,相当于定义一个字符串的一维数组,只是C语言里并没有字符串类型,通过字符数组来实现是一种常用的方式。
但是请注意这种方式定义和用指针定义有本质上的区别。
这篇关于C语言,定义中文二维数组问题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文