×

二维数组 数组

二维数组如何用指针表示?c语言数组移位操作

admin admin 发表于2022-05-14 05:45:55 浏览125 评论0

抢沙发发表评论

二维数组如何用指针表示

二维数组用指针表示有两种方式:

一、动态数组方式。 

完全由动态数据构成二维数组。如M行N列的数组,先分配M个一维指针空间,然后在每个一维指针上分配N个元素的空间,即成为动态二维数组。

和普通数组不同,这种动态二维数组的各行之间地址并不连续。

参考代码:

#include《stdlib.h》int **create(int m, int n)//创建m行n列的二维数组。{    int **r;    int i;    r=(int **)malloc(sizeof(int *) *m);//分配m个int*指针内存。    for(i = 0; i 《 m; i ++)//遍历每行        r[i] = (int *)malloc(sizeof(int)*n);//每行分配n个int型元素。    return r;//返回地址值。}

二、通过数组指针指向已有二维数组。

对于已经定义好的M行N列数组,可以使用指向N个元素的数组指针,指向该数组并访问。 

参考代码:

int a;int (*p);//每行5个元素的数组指针。p=a;//把p指向a。

c语言数组移位操作

思路:

所有数组都移位,那么其中一个元素的值的溢出位将和相邻的元素进行合并,

因此只要记住上一元素的溢出位,在下一元素移动后合并即可。

#define ELEMCNT 3 //定义数组元素个数

char a[ELEMCNT]; //被操作的元素

char exceedA=0,exceedB=0;//记忆溢出位用的变量,其中exceedA为上一元素溢出值,exceedB为本元素溢出值

//定义整体移动函数,其中k为左移位数

void LeftElem(int k){

  int i;

  char Msk=0;//用于计算溢出位的掩码,如k=6时,其掩码值为00000011(二进制)

  for (i=0;i《8-k;i++){

    Msk=Msk|(1《《i);

  } 

  //移动所有数组元素,i值对应数组元素下标i-1

  for (i=ELEMCNT;i》0;i--){

    exceedB=(a[i-1]&(~Msk))》》(8-k);//计算溢出数据

    a[i-1]=a[i-1]《《k+exceedA;

    exceedA=exceedB;

  }}

给数组赋值有几种方式啊

就是for循环没学会吧。那就讲一下for循环和数组应用。就拿你的这个程序举例子好了,定义了一个整型数组a,然后看这段代码:for(i=0;i《3;i++){a[i]=i;}for循环的括号里面有三个东西,for(赋初值;循环条件;步长)赋初值就是给循环变量(相当于一个计数器)赋初值,当然也可以初始化其他的变量。第一个分号后面是循环条件,只有满足循环条件才执行循环体内部的语句,不满足则跳出循环。第二个分号后面是循环变量的自增步长,就是每次循环结束以后,循环变量要增加或减少多少,当然也可以执行其他的运算,按照需求来。运算过程如下:进入for循环后,第一次循环:i=0,给变量i 赋初值为0,然后判断i《3,如果i是小于3的,那么进入循环内部执行for循环里面的语句,即a[i]=i。这里,i是等于0的,那么a[i]就是a,a[i]=i的意思就是a=0,也就是说,给数组a的第一个元素(即下标为0的元素)赋值为0。接着a[i]=i这句执行完了,接着执行的是for循环的步长自增语句,即i++。i++和i=i+1是等价的,所以执行完这句语句以后,i的值从0变成了1。到这里,第一次循环就结束了,现在执行第二次循环。第二次循环:第一次循环结束以后,进入第二次循环之前,先要执行for循环的第一个分号后面的语句,就是循环条件判断。即i《3。在第一次循环结束后,i的值是1,那么1是小于3的,因此符合该条件,开始执行循环体内部的语句a[i]=i,这里,i的值是1,那么a[i]就是a了,也就是数组a的第二个元素(即下标为1的元素),执行完以后,又跳回for循环的第二个分号后面了,执行i++,执行完i++以后,i的值从1变成了2。接着开始第三次循环。如此往复,第三次循环结束以后,i的值变成了3,在执行第四次循环的时候,首先进入for循环的循环条件判断,也就是第一个分号后面的语句,i《3,这个时候i的值是3,3《3是不成立的,因此从这里开始跳出循环,第四次循环也就不执行了。循环结束以后,数组a就变成这样了:a=0,a=1,a=2。而i的值在此时为3。自己一步一步写出来for循环的执行步骤就好了。总结:for(赋初值;循环变量;循环变量自增){循环体;}这句语句的执行顺序是:1.赋初值。2.判断循环条件,若满足条件执行第3步,若不满足条件执行第6步。3.执行循环体语句。4.循环变量自增。5.执行第2步。6.跳出循环。