C语言数组指针的小例子
1、功能:输入6个学生的5门课程成绩,计算出每个学生的平均分和每门课程的平均分。
2、C语言实现代码:(其实就是用二维数组来实现的,二维数组的引用传递使用数组指针来完成)
代码如下:
#include <stdio.h>
#define STUDENT 5
#define SCORE 6
void input_array(float (*score)[STUDENT]);
void avg_score(float (*score)[STUDENT]);
void avg_course(float (*score)[STUDENT]);
/**
* calculate student average score and course average socore.
*/
int main(){
float a[SCORE][STUDENT];
input_array(a);
avg_course(a);
avg_score(a);
}
void input_array(float (*score)[STUDENT]){
int i, j;
for(i=0; i<SCORE; i++){
printf("input the %d student score:", i+1);
for(j=0; j<STUDENT; j++){
scanf("%f", score[i] + j);
}
}
}
void avg_course(float (*score)[STUDENT]){
int i,j;
float s;
for(j=0; j<STUDENT; j++){
printf("course%d ", j);
}
printf("\n");
for(i=0; i<SCORE; i++){
s=0;
for(j=0; j<STUDENT; j++){
printf("%f ", *(score[i] + j));
s += *(score[i] + j);
}
printf("\ts=%f, avg=%f\n" , s,s/STUDENT);
}
}
void avg_score(float (*score)[STUDENT]){
int i,j;
float s;
for(i=0; i<STUDENT; i++){
s = 0;
for(j=0; j<SCORE;j++){
s+= *(score[j]+i);
}
printf("%f " , s/SCORE);
}
}
相关推荐
-
C语言安全之数组长度与指针实例解析
1.C语言编码需要保证变长数组的长度参数位于合法范围之内 例如以下代码: void func(size_t s) { int vla[s]; /*...*/ } /*...*/ func(size); /*...*/ 解决方案如下: enum {MAX_ARRAY = 1024}; void func(size_t s) { if(s < MAX_ARRAY && s != 0) { int vla[s]; /*...*/ } else { //错误处理 } } /*...*/ fu
-
C语言 指针与二维数组详解
二维数组在概念上是二维的,有行和列,但在内存中所有的数组元素都是连续排列的,它们之间没有"缝隙".以下面的二维数组 a 为例: int a[3][4] = { {0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, 10, 11} }; 从概念上理解,a 的分布像一个矩阵: 0 1 2 3 4 5 6 7 8 9 10 11 但在内存中,a 的分布是一维线性的,整个数组占用一块连续的内存: C语言中的二维数组是按行排列的,也就是先存放 a[
-
举例理解C语言二维数组的指针指向问题
之前对数组的概念一直没有理解透彻,只觉得数组名就是个常量指针而已,用法和基本的指针差不多.所以当我尝试用二级指针去访问二维数组时,就经常会出错.下面就是刚开始写的一个错误的程序: #include <stdio.h> int main() { int iArray[2][3] = {{1,2,3},{4,5,6}}; int **pArray = NULL; pArray = iArray; printf("array[0][0] = %d\n", pArray[0][0]
-
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语言中,指针是一个复杂但又灵活多变的知识点,我们知道,
-
C语言 指针数组详解及示例代码
如果一个数组中的所有元素保存的都是指针,那么我们就称它为指针数组.指针数组的定义形式一般为: dataType *arrayName[length]; [ ]的优先级高于*,该定义形式应该理解为: dataType *(arrayName[length]); 括号里面说明arrayName是一个数组,包含了length个元素,括号外面说明每个元素的类型为dataType *. 除了每个元素的数据类型不同,指针数组和普通数组在其他方面都是一样的,下面是一个简单的例子: #include <stdi
-
C语言 指针与数组的详解及区别
C语言 指针与数组的详解及对比 通俗理解数组指针和指针数组 数组指针: eg:int( *arr)[10]; 数组指针通俗理解就是这个数组作为指针,指向某一个变量. 指针数组: eg:int*arr[10]; 指针数组简言之就是存放指针的数组: --数组并非指针&&指针并非数组 (1)定义一个外部变量: eg:int value=10; int *p=&value; 举例:当需要在一个函数中用这个变量时:externa int*p;而非extern int p[]; 分析:当用:e
-
简单分析C语言中指针数组与数组指针的区别
首先来分别看一下,指针数组的一个小例子: #include <stdio.h> #include <string.h> int lookup_keyword(const char*key, const char* table[], const int size) { int ret = -1; int i = 0; for(i=0; i<size; i++) { if (strcmp(key, table[i]) == 0) { ret = i; break; } } ret
-
C语言 数组指针详解及示例代码
数组(Array)是一系列具有相同类型的数据的集合,每一份数据叫做一个数组元素(Element).数组中的所有元素在内存中是连续排列的,整个数组占用的是一块内存.以int arr[] = { 99, 15, 100, 888, 252 };为例,该数组在内存中的分布如下图所示: 定义数组时,要给出数组名和数组长度,数组名可以认为是一个指针,它指向数组的第 0 个元素.在C语言中,我们将第 0 个元素的地址称为数组的首地址.以上面的数组为例,下图是 arr 的指向: 下面的例子演示了如何以指针的方
-
直观理解C语言中指向一位数组与二维数组的指针
一维数组和指针: 对于一位数组和指针是很好理解的: 一维数组名: 对于这样的一维数组:int a[5]; a作为数组名就是我们数组的首地址, a是一个地址常量 . 首先说说常量和变量的关系, 对于变量来说, 用箱子去比喻再好不过了, 声明一个变量就声明一个箱子,比如我们开辟出一个苹果类型的箱子, 给这个变量赋值就是把盛放苹果的箱子中放入一个实实在在的苹果, 这就是变量的赋值. 而对于数组来说, 就是一组类型相同的箱子中,一组苹果箱子, 可以放入不同的苹果. 一维数组空间: 变量被声明后, 我
-
C语言数组指针的小例子
1.功能:输入6个学生的5门课程成绩,计算出每个学生的平均分和每门课程的平均分.2.C语言实现代码:(其实就是用二维数组来实现的,二维数组的引用传递使用数组指针来完成) 复制代码 代码如下: #include <stdio.h>#define STUDENT 5#define SCORE 6void input_array(float (*score)[STUDENT]);void avg_score(float (*score)[STUDENT]);void avg_course(float
-
C语言深入分析数组指针和指针数组的应用
目录 一.数组类型 二.定义数据类型 三.数组指针 四.指针数组 五.小结 一.数组类型 C语言中的数组有自己特定的类型 数组的类型由元素类型和数组大小共同决定 例:int array[5] 的类型为 int[5] 二.定义数据类型 C语言中通过 typedef 为数组类型重命名:typedef type(name)[size]; 数组类型: typedef int(AINT5)[5]; typedef float(AFLOAT10)[10]; 数组定义: AINT5 iArray; AFLOA
-
C语言中指针和数组试题详解分析
目录 数组题: 程序一(一维数组): 字符数组 程序二(字符数组): 程序三(字符数组): 程序四(字符数组): 程序五(字符数组): 二维数组 程序六( 二维数组): 指针题 程序七( 指针): 程序八( 指针): 程序九( 指针): 程序十( 指针): 程序十( 图): 程序十一( 指针): 程序十二( 指针): 程序十三( 指针): 指针 和 数组 试题解析 小编,在这里想说一下,c语言的最后一节 C预处理,可能还需要一些时间,因为小编,昨天才下载了虚拟机 和 linux 系统,还没开始安
-
c语言的指针数组详解
指针如何指向数组,并读取数组中的元素: #include <stdio.h> int main() { int arr[3] = {1,2,3}; int *p; p = &arr[0];//此句也可以写成 p = arr: for(int i=0;i<3;i++) { printf("第%d个元素值为:%d\n",i,*(p+i)); /*应注意这里指针的定义类型:p+i并不是指p的地址+1, 而是偏移一个类型的字节数,这里的类型是int,所以偏移4个字节*
-
C语言数组和指针,内存之间的关系
首先论证一维数组和一级指针之前的关系,我们常常使用一级指针指针的方式访问一维数组,只有对内存的理解到位才能理解它们直接的关系. 1.数组名是数组的首地址 2.对数组名取地址得到的还是数组的首地址 3.数组的访问方式其实就是首地址+偏移的寻址访问 我们在程序中会定义很多变量,有基本类型和自定义类型在进行开发的时候我对内存的访问访问就是通过变量名赋值的方式读写内存但是如果你看到的直接变量的符号名你将不可能理解内存.每一种类型都有字节宽度,char 1字节 short 2字节 int 字节float
-
C语言的数组指针与函数指针详解
目录 前言 函数指针语法 数组指针与指针数组 总结 前言 数组指针和函数指针都是C语言比较难的知识点,尤其是函数指针,并且函数指针在开发中有着巨大的作用. 函数指针语法 定义一个函数指针,并通过函数指针间接调用函数: int get_num(int a, int b) { return a + b; } int (*func)(int a, int b); //定义了一个函数指针func,它指向 返回值为int 参数为 int a, int b的函数 func = &get_num; //函数指
-
C语言函数指针数组实现计算器功能
目录 一.概念 二.用途 三.案例:计算器 (1)基础代码编译: (2)使用函数指针数组的实现: 一.概念 数组:一个存放相同类型数据的存储空间. int arr[10]; //数组arr的每个元素是int 指针数组:一个存放指针的数组. int* arr[10]; //数组arr的每个元素是int* 函数指针:一个指向函数的指针,一般用函数名表示. int Add(int x, int y) { return x + y; } int main() { int arr[10] = { 1, 2
随机推荐
- Android串口通信封装之OkUSB的示例代码
- MongoDB数据更新方法干货篇
- JavaScript 模仿vbs中的 DateAdd() 函数的代码
- Python ZipFile模块详解
- Python 字符串中的字符倒转
- asp.net如何在图片上加水印文字具体实现
- Android自定义UI实现微信语音
- PHP文件缓存smarty模板应用实例分析
- 使用ASP控制指定站点解析脚本语言函数
- 在Ubuntu 16.04安装与使用Docker的教程详解
- 快速实现MySQL的部署以及一机多实例部署
- JavaScript判断前缀、后缀是否是空格的方法
- Code:loadScript( )加载js的功能函数
- JavaScript中setTimeout和setInterval函数的传参及调用
- easyui messager alert 三秒后自动关闭提示的实例
- 详细讲解Java中的main()方法
- Android实现下载工具的简单代码
- 浅析C/C++中被人误解的SIZEOF
- 详解linux系统目录sys,tmp,usr,var!
- 在Python中COM口的调用方法