c语言二维数组
这个就是指针数组和数组指针的区别了,我当年也在这里转了很久,希望我下面所说得可以帮到你。
首先,明确编译器是怎么识别*s[]和(*s)[]两种形式的代码的。对于*s[],编译器会以默认的右结合的方式进行识别,所以首先识别s[],这是一个数组,然后再识别*,说明这个数组的元素都是指针。所以最后的结果就是:这是一个“以指针为元素的数组”,简称指针数组。而对于(*s)[],由于()的优先级高于*,所以编译器会先识别()里面的,也就是先识别*s,所以它是一个指针,然后()说明这个指针指向的是一个数组,所以最后的结果是:这是一个“指向数组的指针”,简称数组指针。
好吧,我承认一点,就是这两个东西看起来复杂,但是其实用起来区别不大,最本质的东西就是,指针数组用到多个指针,数组指针就完全是一个指针跑天下。
看下面一段代码(我偷懒用C++写的,反正这个不是重点):
#include
using
namespace
std;
int
main()
{
//指针数组
*a[2]
int
t1[3]
=
{0,1,2};
int
t2[3]
=
{3,4,5};
int
t3[3]
=
{6,7,8};
int
*a[3];
a[0]
=
t1;
//一个指针赋值
a[1]
=
t2;
//第二个指针赋值
a[2]
=
t3;
//第三个指针赋值
//数组指针
(*b)[3]
int
(*b)[3]
=
new
int[3][3];
for(int
i=0;i3;i++)
for(int
j=0;j3;j++)
*(*(b+i)+j)
=
i*3+j;
//一个指针跑天下
cout
*((*b)+1)
“
“
*(*(b+1))
endl;
system(“pause”);
return
0;
}
最后我想说,其实这个做题的时候有用,自己写的时候还是尽量直接用int[n][m]的方式比较方便,稍微浪费点空间问题不大,重要的是看起来好看,不容易出错。
c语言中二元组是什么
这是对于构造型数据结构的一种称呼,比如平面坐标可以用水平坐标和垂直坐标参数唯一确定,还有一个向量含有一个实部、一个虚部参数,也可以用两个实数参数唯一确定。当然实际例子不止这些。但对于大部分构造数据来说,仅仅两个参数往往是不够的,如通讯录中各个人的信息包括姓名、性别、联系电话等等。
总之,二元组指的是构造类型的数据结构含有两个数据成员。
c语言中二元组是什么 他是二元数组吗
二元组是用来表示一维数组的(数组数据稀疏是可以节省空间)。二元组一般写成m[x][2]。x表示一维数组的长度,2是指二元即这个用于表示一维数组的二维数组只有两列。二元组的本质是二元数组,用途是更节省空间的表示一维数组。
例如一个一维数组a[10]其内容为0 0 1 0 4 0 0 0 9 0 这样10个元素分别放在a[0]~a[9]中。看这个数组中到多是0,那么我们可以这样想:我记录非零位置的位置号和数组值,零的可以不记录,那么用二元组来存就是三个元素而已:2,1 4,4 8,9,这个二元组的意思是a[2]中是1 a[4]中是4 a[8]中是9 其他位置都是零。可以看出二元组其实就是固定为两列的行的一个二维数组。用这个二维数组的第一列表示一维数组a[x]的x,用第二列表示一维数组a[x]的值。
引自: