二维指针

pigeon_2008 2008-07-22 11:11:10
int main(void)
{
int a[N][N] = {0};
int *p = &a[0][0];
int i, j;

for (i=0; i<N; i++)
{
for (j=0;j<N; j++)
{
scanf("%d", a[i]+j);
}
}

printf("%d\n", MAXVALUE(&p));
return 0;
}

int MAXVALUE(int **p)//找出最大值
{

}
...全文
165 11 打赏 收藏 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengzhixi 2008-07-22
  • 打赏
  • 举报
回复
恐怕要用二级指针才好
pigeon_2008 2008-07-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 SUN_DRAGON 的回复:]为什要N*N???
#include <stdio.h>
#define N 2


int MAXVALUE(int **p)//找出最大值
{
int max=*p[0],i;
for(i=1;i <N*N;i++)
if((*p)[i]>max)
max=(*p)[i];
return max;
}


int main(void)
{
int a[N][N] = {0};
int *p = &a[0][0];
int i, j;

for (i=0; i <N; i++)
{
for (j=0;j <N; j++)
{
scanf("%d", a[i]+j);
}
}

printf("%d\n", MAXVALUE(&p));
return 0;
}
[/Quote]
SUN_DRAGON 2008-07-22
  • 打赏
  • 举报
回复
#include<stdio.h>
#define N 2


int MAXVALUE(int **p)//找出最大值
{
int max=*p[0],i;
for(i=1;i<N*N;i++)
if((*p)[i]>max)
max=(*p)[i];
return max;
}



int main(void)
{
int a[N][N] = {0};
int *p = &a[0][0];
int i, j;

for (i=0; i <N; i++)
{
for (j=0;j <N; j++)
{
scanf("%d", a[i]+j);
}
}

printf("%d\n", MAXVALUE(&p));
return 0;
}

puzzlesky 2008-07-22
  • 打赏
  • 举报
回复
楼主要求代码?
长安宁 2008-07-22
  • 打赏
  • 举报
回复
int main(void) 
{
int a[N][N] = {0};
int *p = &a[0][0];
int i, j,max=0;

for (i=0; i <N; i++)
{
for (j=0;j <N; j++)
{
scanf("%d", a[i]+j);
if(max<*(a[i]+j))
{
max = a[i][j]; //这个max就是最大值
}
}
}

printf("%d\n", max);
return 0;
}

int MAXVALUE(int **p)//找出最大值
{

}
e_sharp 2008-07-22
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 chlaws 的回复:]
数组内存排列顺序是直线型的,实际中的N*N的2数组非你想象的N行N列而是N*N个单位的直线排列,因为地址连续,所以可以用指针递增来访问
[/Quote]
活胖子 2008-07-22
  • 打赏
  • 举报
回复
头地址都一样,明白了毫无难度。
  • 打赏
  • 举报
回复
楼主注意一下,输入的时候只有char数组才不用加&,别的最好加上&不然很容易出现无法预料的错误哦!~
  • 打赏
  • 举报
回复
实现方法很多的

#include <stdio.h>
#include <stdlib.h>
#define N 2

int MAXVALUE(int **p);
int max(int (*p)[N]);
int maxs(int p[N][N]);

int main(void)
{
int a[N][N] = {0};
int *p = &a[0][0];
int i, j;

printf("Please input %d numbers.\n",(N * N));
for (i = 0; i < N; i++)
{
for (j = 0;j < N; j++)
{
scanf("%d", &a[i][j]);
}
}

printf("The max is ");
printf("%d\n", MAXVALUE(&p));
printf("(%d)\n",max(p));
printf("<%d>\n",maxs(p));

return 0;
}

/* 找出最大值 */
int MAXVALUE(int **p)
{
int max = *p[0];
int i;

for(i = 1;i < (N * N);i++)
if((*p)[i] > max)
{
max = (*p)[i];
}

return max;
}

int max(int (*p)[N])
{
int max = p[0][0];
int i,j;

for(i = 0;i < N;i++)
{
for(j = 0;j < N;j++)
{
if(max < p[i][j])
{
max = p[i][j];
}
}
}

return max;
}

int maxs(int p[N][N])
{
int max = p[0][0];
int i,j;

for(i = 0;i < N;i++)
{
for(j = 0;j < N;j++)
{
if(max < p[i][j])
{
max = p[i][j];
}
}
}

return max;
}
活胖子 2008-07-22
  • 打赏
  • 举报
回复

int MAXVALUE(int *p)
{
int max=*p,i;
for(i=1;i <N*N;i++)
if(*(p+i)>max)
max=*(p+i);
return max;
}

所谓2维数组其实是一维的,可以直接用。a[N][N]你可以看成a[N*N]数组来处理。
为什么子函数不是char *P

printf("%d\n", MAXVALUE(p));
chlaws 2008-07-22
  • 打赏
  • 举报
回复
数组内存排列顺序是直线型的,实际中的N*N的2数组非你想象的N行N列而是N*N个单位的直线排列,因为地址连续,所以可以用指针递增来访问
源码链接: https://pan.quark.cn/s/a4b39357ea24 微信小程序是由腾讯公司设计的一种轻量级应用开发平台,主要面向移动设备,旨在为用户带来无需下载安装即可直接使用的应用服务体验。在微信小程序的开发实践中,"模仿美团菜单 swiper分类菜单"是一项常见的技术应用,其目的是达成与美团外卖应用相似的交互模式,使用户能够轻松地浏览和挑选各种商品或服务。 在微信小程序的技术体系中,`swiper`组件属于轮播图功能模块,通常用于呈现多张图片或卡片式的切换界面,能够达成动态滑动展示不同分类菜单的功能。在模拟美团菜单的应用情境下,`swiper`组件一般与`swiper-item`组件协同工作,每一个`swiper-item`对应一个分类,用户可通过左右滑动来切换不同的分类菜单。 为了达成这样的功能,首先需要在微信小程序的`json`配置文档中引入`swiper`组件,并在`wxml`结构文档中构建相应的布局代码,将每个分类以`swiper-item`的形式进行组织。同时,需要在`wxss`样式文档中定义恰当的样式,保证分类菜单的视觉呈现符合设计规范。 接下来,我们将在`js`逻辑文档中处理`swiper`的切换逻辑,通过监听`bindchange`事件来识别当前选中的分类,并根据这一信息动态获取对应的子菜单信息。为了达成类似美团的层级菜单功能,可能还需要借助`picker`或`navigator`组件来展示二级分类或商品详情。 在开发阶段,需要关注以下关键点: 1. 数据绑定:保证数据与界面之间的双向链接准确无误,以便在选择分类时即时更新显示内容。 2. 动态加载:针对大量数据,可能需要采取异步加载机制,防止一次性加载过多内容引发性能瓶颈...
代码下载地址: https://pan.quark.cn/s/72bd50ecb2fb 《微信飞机大战素材详解》 微信飞机大战作为一款广受欢迎的休闲游戏,凭借其便捷的操作方式和紧张刺激的游戏过程,赢得了众多用户的青睐。本文将系统性地剖析这款游戏的关键素材,旨在帮助开发者全面掌握游戏的设计理念与实现方法。 我们聚焦于游戏的核心构成——"AirplaneResource"。此名称一般指向游戏资源库,其中收纳了游戏中所有的视觉素材、音频资料以及动画元素。在微信飞机大战的语境下,这些资源构成了游戏画面呈现、音效播放和动态效果的基础。 1. **图像素材**:游戏中的飞机造型、敌方单位、弹药以及爆炸效果等视觉元素,均以图像素材的形式进行展示。图像素材通常涵盖PNG或JPG格式的静态图片,也包括GIF或APNG格式的动态图片。开发者需要细致地设计并优化这些图像,确保在各种设备上都能实现流畅的渲染,同时维持视觉表现力。 2. **声音素材**:游戏的背景音乐、射击音效、爆炸声等音频片段,对于构建游戏氛围具有决定性作用。这些音频文件可能以MP3、WAV或OGG格式进行存储,开发者需要权衡音频的压缩程度与音质,以确保在不牺牲游戏体验的前提下,有效控制文件体积。 3. **动画序列**:飞机的飞行轨迹、攻击动作、爆炸过程等动态表现,通常借助序列帧动画技术实现。这些序列帧图片组合而成的动画,通过编程控制播放速率和顺序,为游戏增添生动的动态效果。 4. **物理接触判定**:游戏中飞机与弹药之间的接触判定,是通过算法完成的。开发者可能会采用基础的矩形接触判定或更精密的像素级接触判定,以保证游戏的公平性和挑战性。 5. **游戏规则**:微信飞机大战的得分机制、生命值系统、敌机生成逻辑等...

70,040

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧