C/C++中多维数组指针作为函数参数传递

注意此题的意思在于输入3个同4门课的成绩,计算出平均值和显示其中一个同学的4门课成绩,此例是对多维数组指针和多维数组的指针作为涵数参数传递的总结,认真联系和体会可以很好的了解多维数组指针的概念到底是什么!

#include <stdio.h>
main()
{
void search_score(); /* 定义自定义涵数类型为不返回型 */
void count_avg(); /* 定义自定义涵数类型为不返回型 */
static float a[3][4]={{97,45.5,66,77},{88,92.5,78.5,66},{83,74.5,92,100}}; /* 输入3个学生的各自4门课的成绩 */
search_score(a,0); /* 调换自定义涵数显示其中一个同学的各门课成绩 */
count_avg(*a,12); /* 调换自定义涵数显示3个同学各门课的平均成绩成绩 */
/* 注意上面的*a其实也就是a[0]或者是&a[0][]0将这行改写成count_avg(a[0],12);或者count_avg(&a[0][0],12)也都是对的 */
}
void search_score(p,n)
float (*p)[4]; /* 定义一个指针变量p,说明它是一个指向一个包含4个整型变量一维数组的指针 */
int n; /* 定义形式参数n为整形 */
{
int i; /* 定义用于循环的变量i */
for (i=0;i<4;i++ ) /* 这里循环4次用于打印一个同学的4门课成绩 */
{
printf("%7.2f",*(*(p+n)+i));
}
printf("\n");
}
void count_avg(p,n)
float *p;
int n;
{
float *p_end;
float sum = 0;
float avg;
p_end = p+n-1; /* 计算出最后一个数组元素的地址 */
for (;p<=p_end;p++) /* 循环到最后一个元素地址就停止 */
{
sum += *p;
}
avg = sum/n;
printf("avg=%7.2f\n",avg);
}

时间: 2024-08-15 18:22:18

C/C++中多维数组指针作为函数参数传递的相关文章

C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com

原文:C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表本文由 arthinking 发表于315 天前 ⁄ itzhai.com原创文章 ⁄ C语言 ⁄ 评论数 3 ⁄ 被围观 1,775 views+   指针数组: 在一个数组中,如果它的元素全部都是指针

c语言-C语言中多维数组如何赋值

问题描述 C语言中多维数组如何赋值 请问 多维数组如何赋值 int a[3][4][5]; 请问C语言的前辈们 数组a中的元素个数是不是60个呢? 我是这样算出来的 这个多维数组是 12一维数组的集合 这个1维数组的元素有5个 12x5=60 解决方案 C语言 指针数组 多维数组C语言 指针数组 多维数组C语言中多维数组的理解 解决方案二: 最后一个参数是在一行当中确定一个,第二参数是在很多行当中确定一行,第一个参数是在很多页当中确定一页,为了确定某个元素,你必须先确定它在哪一页上,每一页都是4

C语言中二维数组指针的简要说明_C 语言

C语言中,指针是一个复杂但又灵活多变的知识点,我们知道,在一维数组中,对于一个数组a[],*a,a,&a,都表示a的首地址,但如果与二维数组混合使用,就显得更为复杂了.例如对于一个二维数组 a[2][4]={{1,2.3},{4,5,6}} a+i,&a[i],*(a+i),a[i], 这四个表达式到底表示什么呢? 先告诉答案吧,其实这几个表达式都是指向同一个地址的,也许你会很诧异,也会很疑惑,怎么会是这样呢!!事实证明就是这样的, C语言中,指针是一个复杂但又灵活多变的知识点,我们知道,

js 中多维数组的深拷贝的多种实现方式

因为javascript分原始类型与引用类型(与java.c#类似).Array是引用类型,所以直接用=号赋值的话,只是把源数组的地址(或叫指针)赋值给目的数组,并没有实现数组的数据的拷贝.另外对一维数组和多维数据的深拷贝实现方式是不一样的,下面分别讨论.   一. 错误实现 var array1 = new Array("1","2","3"); var array2; array2 = array1; array1.length = 0; a

C语言二维数组指针问题

问题描述 C语言二维数组指针问题 如下两个代码,第一个代码会停止运行,而第二个能得出正确结果...这两个代码的不同之处不应该是等价的吗?为什么会造成这种完全相反的结果? #include<stdio.h> void main() { void ave(float *p,int m); float a[3][4]={{65,66,67,68},{78,79,80,71},{54,78,65,54}}; ave(*a,12); } void ave(float *p,int m) { float

详解C++中的指针、数组指针与函数指针_C 语言

C++中一个重要的特性就是指针,指针不仅具有获得地址的能力,还具有操作地址的能力.指针可以用于数组.或作为函数的参数,用来访问内存和对内存的操作,指针的使用使得C++很高效,但是指针也非常危险,使用不当会带来比较严重的问题. 1.指针 程序中所有的变量和常量都存在一个内存地址中,当然,函数也有对应的内存地址,内存地址的不同会导致程序执行时有所不同. 指针就是用来控制和存储内存地址的变量,它指向单个对象的地址,除了void之外,指针的数据类型与所指向地址的变量数据类型保持一致. 2.如何定义指针.

thinkPHP中多维数组的遍历方法_php实例

本文实例讲述了thinkPHP中多维数组的遍历方法.分享给大家供大家参考,具体如下: $drug=array( 'ACEI'=>array(array('ch_name'=>'','en_name'=>'captopril'),array('ch_name'=>'脚本下载','en_name'=>'enalapril'), array('ch_name'=>'赖诺普利','en_name'=>'lisinopril')), 'ARB'=>array(arra

C语言中:二维数组能否作为函数参数,如何定义?

问题描述 C语言中:二维数组能否作为函数参数,如何定义? 二维数组能否作为函数的参数进行单独的定义和使用?将?个二维数组的行和列交换,存储到另外一个数组中去,该如何定义函数实现呢? 解决方案 C语言中,数据名做函数的参数后,会退化为指针.没有必要使用指向指针的指针,使用指针就可以了:另外,将是几维数组.和每一维的大小也做为参数传入函数就可以的. 解决方案二: 可以作为函数参数传,但一般不这样做,一般传的是 指向该二维数组的指针~ 解决方案三: 二维数组作为函数参数(C语言)C/C++ 二维数组作

二维数组问题-二维数组给子函数传递值的问题

问题描述 二维数组给子函数传递值的问题 给子函数传递一个二维数组时,在子函数定义那int Sum(int arr[ ][3])是正确的,而int Sum(int arr[3][ ])错误,这是为什么? 解决方案 一个二维数组的行数(由二维数组的第一个下标指定)不是必需的,而列数(由第二个下标指定)是必需 编译器用这个形参中的二维数组的列数来确定元素的位置(在内存中).对二维数组来说,每一行是一个一维数组.要找到某个特定行中的元素,编译器必须准确地知道每一行有多少个元素,然后才能在访问数组时跳过确