QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 812|回复: 6

这个可以改3级指针吗?

[复制链接]
发表于 2004-5-20 20:12:21 | 显示全部楼层 |阅读模式
#include<stdio.h>
main(){
  unsigned char image[480][640][3];
  unsigned char out[480][640][3];
  int x,y;
  FILE *fp;
  for(y=0;y<480;y++){
    for(x=0;x<640;x++){
      image[y][x][0]=((x+y)*1)%256;
      image[y][x][1]=((x+y)*2)%256;
      image[y][x][2]=((x+y)*3)%256;
    }
  }

      for(y=0;y<480;y++){
        for(x=0;x<640;x++){
          out[y][x][0]=image[y][640-x][0];
          out[y][x][1]=image[y][640-x][1];
          out[y][x][2]=image[y][640-x][2];
        }
      }
  fp=fopen("image.ppm","wb");
  fprintf(fp,"P6\n640 480\n255\n");
  fwrite(image,sizeof(char),640*480*3,fp);
  fclose(fp);
  fp=fopen("out.ppm","wb");
  fprintf(fp,"P6\n640 480\n255\n");
  fwrite(out,sizeof(char),640*480*3,fp);
  fclose(fp);
}



unsigned char image[480][640][3]改成unsigned char ***image
可能吗??
发表于 2004-5-20 23:03:15 | 显示全部楼层
可以,不过还是数组方便
回复

使用道具 举报

发表于 2004-5-21 19:36:10 | 显示全部楼层
可以的~
这个……我觉得指针和数组差不多啦~
char s[10];
那么
printf("%c",*(s+1));

printf("%c",s[1]);
是一样的~
习惯问题而已~
回复

使用道具 举报

 楼主| 发表于 2004-5-21 23:19:43 | 显示全部楼层
谢谢啦,,,,,
我只会改1级的,,,,



kaka
回复

使用道具 举报

发表于 2004-5-22 00:09:00 | 显示全部楼层
[quote:438fbb683b="默难"]可以的~
这个……我觉得指针和数组差不多啦~
char s[10];
那么
printf("%c",*(s+1));

printf("%c",s[1]);
是一样的~
习惯问题而已~[/quote]
一维是这样,多维就不同了。
回复

使用道具 举报

发表于 2004-5-22 22:51:35 | 显示全部楼层
[quote:d5bd8b3d87="mozilla"]可以,不过还是数组方便[/quote]
仔细想了一下,虽然不是不可以,但非常麻烦,指针(不管是几级的指针)要经过3级的内存分配才能构成一个三维指针。因为没有经过特别构造的char ***只是三级指针,是一维的,所以不能直接代替char [][][]。
回复

使用道具 举报

发表于 2004-5-24 02:57:47 | 显示全部楼层
unsigned char image[480][640][3]改成unsigned char ***image
可能吗??

必须先分配空间,才能用。
unsigned char***  image;
image = new unsigned char**[480];
for(int i = 0 ; i <480 ; ++i) {
     image = new unsigned char*[640];
     for(int j=0; j<640; ++j) {
              image[j] = new unsigned char[3];
    }
}
释放时是反着的
for(int i = 0 ; i <480 ; ++i) {
     for(int j=0; j<640; ++j) {
          delete image[j];
     }
     delete image;
}
delete image;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-8 06:43 , Processed in 0.045757 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表