编程求最大值 用指针
来源:互联网 发布:公司开淘宝店要交税吗 编辑:程序博客网 时间:2024/05/21 14:44
#define M 3
#define N 2
int main()
{
int arr[N][M];
int n ;
int i,j,max = 0;
int compare(int (*p)[M],int n);
printf("请输入六个数,回车结束:\n");
for(i = 0;i < N;i++)
for(j = 0;j < M;j++)
scanf("%d",&arr[i][j]);
max = compare(arr,M*N);
printf("最大数为:%d",max);
return 0;
}
int compare(int (*p)[M],int n)
{
int i,j,high;
high = **p;
for(i =0;i < N;i++)
for(j = 0;j < M;j++)
{
if(high < *(*(p+i)+j))
high = *(*(p+i)+j);
}
return high;
}
运行结果:
请输入六个数,回车结束:23
13
34
5879
98
45
最大数为:5879
源程序没有注释,平时没注意不是个好习惯!以后得好好注意!
读了一晚上二维数组的知识之后写下了这个程序,gcc编译通过。
数组指针 和 指针数组
数组指针 首先是一个指针 也称行指针 例如 char (*p)【N】;
定义了一个字符型的数组指针,因为【】的优先级比*高 ,所以必须用小括号括起来,小括号的优先级是最高的,那么p变量就是一个指针;
定义 type(类型) (*p)【N】 N通常是确定的
如下 int ARR[M][N] ;
int (*p)[N] = ARR;
通过这样的话 (*p)[N] 指向二维数组的第0行
(*(p+1))[N] 指向二维数组的第一行 N表示列数
(*(p+2))[N] 指向二维数组的第二行
大概因为这样也有行指针的说法吧!ARR是二维数组的首地址,c语言规定数组名为首地址;
指针数组 顾名思义 是一个数组首先 example: char *p[M] ;
数组指针 就是数组元素都是一个指针
借用百度知道的一个例子来表达下:
仔细研读下面的程序:
#include <stdio.h>
int main(void)
{ int a[2][2] = {{1,2},{3,4}};
int (* p)[2];
char * s[2] = {"hello", "world"};
p = a; printf("%d, %d, %d, %d\n", (*p)[0], (*p)[1], (*(p+1))[0], (*(p+1))[1]);
printf("%s %s\n", s[0], s[1]);
return 0;
}
、、、、、、、、、、、、、、、、、、、、、、、、、、、、
如上面的程序 int(*p)[2]是一个数组指针 行指针
因此输出结果为:1,2,3,4
int *s[2]是一个指针数组
s[0]存放“hello”字符串的首地址
s[1]存放“world”字符串的首地址
因此输出结果为:hello world
然后就是二维数组的首地址与行地址,元素的地址的纠结
表达不好,例如:
int ARR[2][3];//定义一个2行3列的二维数组
ARR 数组名表示二维数组的首地址 ARR +1 则是第一行的首地址
ARR[0],ARR[1];表示二维数组的第 0 行和第 1 行
*ARR 表示第0行首地址
好 这样问题来了 ARR 表示二维数组的首地址 *ARR表示第0行0列的首地址 这两个地址是相同的
常常会发问了 ARR和*ARR 怎么会是同一个值呢
谭浩强的书上大概是这样写的 一个二维数组
ARR 地址指向的是二维数组的行 ARR +1 指向下一行
*ARR 地址指向的是二维数组中指定行的列 *ARR+1 指向的是第0行第一列的元素 即ARR[0][1]的地址 如果要表示ARR[0][1]的值 直接*(*ARR+1);
*(ARR+i)+j //第i行第j列的地址
*((*ARR+i)+j) //第i行第j列的值
ARR二维数组的地址 *ARR不是表示ARR地址所指向的值
只是指向不同
ARR是指向二维数组的行
*ARR是指向二维数组指定行的第几列
谭浩强老师的书上的描述这个指向的例子很生动
就像学校里我们班点名签到一样
班长负责点这一个班的人是否到齐 正如ARR 他指向的是组长 问组长是否你这个组到齐
组长负责点自己所在的组的成员是否到齐 正如*ARR 他指向的是一个组的成员 他要一个一个的查到自己组的成员是否到齐
表达不清的错误的地方还望多多批评指正!我会再接再厉!
- 编程求最大值 用指针
- 指针求最大值
- [编程题]求最大值
- MPI编程--求最大值
- [编程题]求最大值
- C++求最大值编程
- 用指针法求数组元素的最大值
- 用函数指针求两个数的最大值
- 用指针编写一函数求三个整数的最大值
- ELisp编程十:求最大值
- shell编程连载【5】- 求最大值
- 编程:求三个整数中的最大值
- 用行指针为函数形参来实现对该二维数组求最大值
- 16周 项目2 指来指去 用指针法求两个数最大值
- 求两个数的最大值(用函数指针变量调用函数)
- 用调用函数求最大值
- 线段树求区间最大值和最小值(指针)
- 函数指针——求数组最大值和和
- 霍夫曼编码压缩算法 - 博客 - 伯乐在线
- linux进程管理的一些问题
- 岁月无情,人生有限,点滴情感
- 轩辕剑 天之痕(转载-剧情小说)
- 基于用户投票的排名算法
- 编程求最大值 用指针
- 测试工具的选择和使用
- 日记2012-7-15
- IT项目风险管理
- IT项目管理中风险控制的4个重要步骤
- mongodb_创建、删除、更新
- XSLT(12) Generating Output
- 黑马程序员之初学感受
- SendARP结合线程池扫描局域网计算机