纯指针对二维数组进行操作

纯指针对二维数组进行操作

二维数组

#include <stdio.h>

int array[3][4] = {
   {1,2,3,4},
   {5,6,7,8},
   {9,10,11,12}
};

void Show_array(int (*array)[4]){
   int (*p)[4];     //定义一个一维数组指针   注如果想定义一个二维数组指针,如下: int *(*P)[];
   int *p1;         //定义一个整形指针
   //按照地址进行数组元素选择
   for(p = array; p < (array+3); p++){
      for(p1 = *p; p1 < *p+4; p1++){
         printf("%d  ",*p1);
      }
   }
}

int *set_array(int (*array)[4],int value){
   int (*p)[4];
   int *p1;
   for(p = array; p < (array+3); p++){
      for(p1 = *p; p1 < *p+4; p1++){
         *p1 = value;
      }
   }
   return *p;
}

int main(void){

   int *p;
   Show_array(array);
   printf("\r\r\n");
   p = set_array(array,0);
   Show_array(array);
   return 0; 
}

字符数组 *char array[];

#include <stdio.h>

//指针数组只能用字符串往里面填。而且其数组名的类型就是一个二维指针(array)。
//虽然没有写上维数,但是实际上维数还是按照其中字符串当中最大的那个。
char *array[] = {    
    "zjl",
    "is",
    "good",
    "student"
};

void add(char **array){
    char **p1;
    char *p2;
    for(p1 = array; p1 < array+4; p1++){     //开始是用 p1 != NULL 来作为判断项,但是实际上不行,还不知道咋回事。
    for(p1 = array; *p1 != NULL; p1++){      //NULL可以与一级指针进行比较,但是和二级指针就不能进行比较,所以对二级指针进行间接引用才可以与NULL进行比较判断。但是目前不知道为什么,因为都是指针啊。
        for(p2 = *p1; *p2 != '\0'; p2++){
            printf("%c",*p2);
        }
        printf("%c",' ');
    }
    printf("!");
}

int main(void){
    add(array);
    printf("\r\r\n");
    printf("%ld",sizeof(array));
    printf("\r\r\n");
    printf("%ld",sizeof(array)/sizeof(array[0]));
    return 0;
}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值