c语言学习笔记(数组、函数)
大学c语言知识点笔记 大学c语言基础考试知识点

大学C语言知识点笔记C语言是一门非常重要的编程语言,广泛应用于各个领域。
在大学学习C语言是非常重要的一环,因为它是计算机科学和软件工程领域的基础。
本文将总结大学C语言基础考试知识点,希望能够帮助各位同学更好地备考。
1. 基本语法C语言的基本语法是了解C语言的第一步。
下面列举一些常见的基本语法知识点:•变量和数据类型:如何声明变量,各种数据类型的特点和使用方法。
•运算符:算术运算符、逻辑运算符、关系运算符等。
•控制结构:条件语句(if-else语句、switch语句)、循环语句(for 循环、while循环、do-while循环)。
•函数:函数的定义和调用,函数参数的传递。
•数组:一维数组和二维数组的定义和使用。
•指针:指针的基本概念,指针的声明和使用,指针与数组的关系。
•结构体:结构体的定义和使用。
2. 程序设计C语言的程序设计是非常重要的一环,它涉及到如何用C语言解决实际问题。
下面列举一些常见的程序设计知识点:•算法和流程图:如何使用伪代码描述算法,如何使用流程图表示问题的解决过程。
•函数的设计:如何设计一个函数,如何将一个大问题划分为多个小问题,如何通过函数的调用和返回来解决问题。
•递归:递归函数的概念、递归函数的实现和调用。
•文件的读写:如何打开文件、读取文件、写入文件。
•链表:链表的定义和基本操作,如何使用链表解决问题。
•排序和查找:各种排序算法(冒泡排序、快速排序、插入排序)和查找算法(二分查找、顺序查找)的原理和实现。
3. 内存管理C语言中的内存管理是非常重要的一部分,它直接影响到程序的性能和稳定性。
下面列举一些常见的内存管理知识点:•变量的作用域和生命周期:局部变量和全局变量的作用域范围和生命周期。
•内存分配和释放:动态内存分配的原理和使用方法,如何使用malloc函数来申请内存,如何使用free函数来释放内存。
•内存泄漏和野指针:内存泄漏和野指针的概念和原因,如何避免内存泄漏和野指针的产生。
C语言数组知识点总结

数组定义:数组是有序的并且具有相同类型的数据的集合;一维数组1、一般形式:类型说明符数组名常量表达式;例如: int a10; 元素为a0----a9.2、常量表达式中不允许包含变量,可以包含常量或符号常量;3、数组元素下标可以是任何整型常量、整型变量或任何整型表达式;4、可以对数组元素赋值,数组元素也可以参与运算,与简单变量一样使用;5、使用数值型数组时,不可以一次引用整个数组,只能逐个引用元素;6、需要整体赋值时只可以在定义的同时整体赋值;如int a10={0,1,2,3,4,5,6,7,8,9};正确;int a10; a10={0,1,2,3,4,5,6,7,8,9};错误;7、可以只给一部分元素赋值;例如:int a10={5,8,7,6};后面没有赋值的元素值默认为0;8、对全部数组元素赋值时可以不指定数组长度,例如:int a10={0,1,2,3,4,5,6,7,8,9};可以写成 int a={0,1,2,3,4,5,6,7,8,9};但是,既不赋初值,也不指定长度是错误的;例如:int a;错误;二维数组1、一般形式:类型说明符数组名常量表达式1常量表达式2;例如:int a34;可以看成是包含3个一维数组,每个一维数组里包含4个元素;一共34=12个元素;所有元素为 a00,a01,a02,a03a10,a11,a12,a13a20,a21,a22,a232、与一维数组一样元素下标可以是是任何整型常量、整型变量或任何整型表达式;3、需要整体赋值时只可以在定义的同时整体赋值;例如:int a34={{1,2,3,4},{5,6,7,8},{9,10,11,12}};正确;int a34; a34={{1,2,3,4},{5,6,7,8},{9,10,11,12}};错误;4、可以把所有数据写在一个花括号内;例如:int a34={1,2,3,4,5,6,7,8,9,10,11,12};正确;5、可以只对部分元素赋值;例如:int a34={{1},{5},{9}};其余未赋值的元素默认为0;int a34={{1},{5,6}};可以看成是int a34={{1,0,0,0},{5,6,0,0},{0,0,0,0}};6、对全部数组元素赋值时可以省略第一维长度,第二维不可以省略;例如:a34={{1,2,3,4},{5,6,7,8},{9,10,11,12}};可以写成a4={{1,2,3,4},{5,6,7,8},{9,10,11,12}};或者a4={1,2,3,4,5,6,7,8,9,10,11,12};字符数组1、定义:char a10;字符数组a长度为10;每个元素只能存放一个字符;例如:a0='h';a1='a';a2='p';……2、初始化:char a={'h','a','p','p','y'};char a="happy";char a={"happy"}; 注意,因为字符串结尾自动加'\0',所以char a="happy";长度为6,不是5;3、C语言中没有字符串变量,字符串的输入、存储、处理和输出等必须通过字符数组实现;4、字符串的输入;scanf;可以用%C逐个字符输入比如char a6;fori=0;i<6;i++ scanf"%c",&ai;可以用%S以字符串的形式输入,比如char a6;scanf"%s",a;注意,a前不用加&,因为a是数组名,已经代表了数组首地址;注意:以%S输入时,以第一个非空白字符开始,终止于第一个空白字符;比如:输入How are you时;只输出How.gets;作用为输入一个字符串;与scanf;功能一致,但空格和回车都存放在数组中,最后自动加入‘\0’.不会出现上面输出不全的情况;调用方式为:gets数组名;需要包含头文件“stdio.h”.5、字符串的输出;printf;可以使用%C逐个字符输出,比如:char a6;fori=0;i<6;i++ printf"%c",ai;可以用%S以字符串的形式输出,比如char a6;printf"%s",a;puts;输出一个字符串,结尾自动换行;调用形式:puts字符数组名或字符串常量;需包含头文件“stdio.h”常用字符串处理函数以下函数需要头文件“string.h”1、strlen作用是测试字符串长度;这里不包括‘\0’.使用形式strlen数组名或字符串常量2、strcat作用是连接两个字符串;调用方式strcat字符数组1名,字符数组2名;合并后的字符串存放在字符数组1中;3、strcmp比较两个字符串是否相等;调用方式strcmp字符串1,字符串2;相等时值为0;1>2时为正数;1<2时为负数;4、strcpy复制字符串;调用方式strcpy字符数组1,字符串2;2的内容复制到1中;1只能是字符数组名;。
c语言数组函数的使用方法

C语言数组函数的使用方法1. 介绍C语言是一种广泛应用于系统开发、嵌入式设备、游戏开发等领域的编程语言。
在C语言中,数组是一种特殊的数据结构,它可以容纳多个相同类型的元素,并通过索引来访问和操作这些元素。
函数是C语言中的重要概念,它可以使程序模块化并提高代码的可读性和复用性。
本文将介绍C语言中数组函数的使用方法。
2. 定义和初始化数组定义数组是指给数组分配内存空间,并为数组元素指定类型。
C语言中,可以使用以下语法来定义一个数组:<数据类型> <数组名>[<数组大小>];例如,定义一个包含5个整数的数组:int numbers[5];数组的大小指定了数组可以容纳的元素个数。
数组的索引从0开始,因此上述数组的索引范围是0到4。
进行数组初始化可以分为两种情况:2.1 静态初始化静态初始化是指在定义数组时直接给数组元素赋初值。
例如,下面的代码定义并初始化了一个包含5个整数的数组:int numbers[5] = {1, 2, 3, 4, 5};上述代码将数组的前5个元素分别赋值为1、2、3、4和5。
2.2 动态初始化动态初始化是指在定义数组后,通过循环或用户输入等方式给数组元素赋值。
例如,下面的代码定义了一个包含5个整数的数组,并通过循环给数组元素赋值:int numbers[5];int i;for (i = 0; i < 5; i++) {numbers[i] = i + 1;}上述代码通过循环将数组的前5个元素分别赋值为1、2、3、4和5。
3. 数组函数的定义和使用数组函数是指以数组为参数和/或返回值的函数。
在C语言中,可以通过以下方式定义数组函数:<返回类型> <函数名>(<数据类型> <数组名>[<数组大小>]) {// 函数体}下面是一个示例,定义了一个数组函数用于计算数组中所有元素的和:int sum(int numbers[], int size) {int result = 0;int i;for (i = 0; i < size; i++) {result += numbers[i];}return result;}上述代码定义了一个名为sum的函数,接受一个整数数组和数组大小作为参数,并返回数组元素的和。
c语言基础知识笔记

c语言基础知识笔记
1、定义
函数是一组一起执行一个任务的语句,每个C程序都至少有一个函数,即主函数main(),所有简单的程序都可以定义其他额外的函数。
函数声明告诉编译器函数的名称、返回类型和参数,函数定义提供了函数的实际主体。
2、函数的一般形式
return_typefunction_name(parameterlist)
{bodyofthefunction}
组成部分:
1.返回类型
返回类型:一个函数可以返回一个值。
return_type是函数返回的值的数据类型,有些函数执行所需的操作而不返回值,在这种情况下,return_type是关键字void。
2.函数名称
函数名称:这是函数的实际名称。
函数名和参数列表一起构成了函数签名。
注意:函数名和参数列表一起构成了函数签名,意味着可以出现参数列表不同但是函数名相同的函数。
voidprint()
{printf("helloworld!");}
voidprint(intnums)
{printf("%d\n",a);}
3.参数
参数:参数就像是占位符,当函数被调用时,您向参数传递一个值,这个值被称为实际参数。
参数列表包括函数参数的类型、顺序、数量,参数是可选的,也就是说,函数可能不包含参数。
4.函数主体
函数主体:函数主体包含一组定义函数执行任务的语句。
(完整)C语言 谭浩强学习笔记

C语言谭浩强版笔记第一章程序设计和C语言1、计算机能直接识别和接受的二进制代码称为机器指令,机器指令的集合就是该计算机的机器语言。
2、语言的发展历史:①机器语言②符号语言③高级语言3、高级语言的发展:①非结构化语言②结构化语言③面向对象的语言4、C语言的祖先是BCPL语言5、在字符串中的//和/*都不作为注释的开始。
而是作为字符串的一部分。
【但是在vc++6.0中//显示编译错误】6、不要以为在max函数中求出最大值z后就会自动地作为函数值返回调用处,必须用return语句指定将哪个值作为函数值。
也不要不加分析地在所有函数后面都写上return 07、一个程序由一个或多个源程序文件组成8、全局声明:即在函数之外进行的数据声明,在函数外面声明的变量称为全局变量。
例如把int a,b,sum;放到main函数的前面9、函数是C程序的主要组成部分,编写C程序的工作主要就是编写一个个函数10、一个C语言程序是由一个或多个函数组成的,其中必须有且只有一个main函数11、一个小程序只包含一个源程序文件,在一个源程序文件中包含若干个函数(其中一个为main函数),若程序规模太大,可以使一个程序包含若干个源程序文件,每个源程序文件又包含若干个函数【一个源程序文件就是一个程序模块,一个程序分成若干个程序模块】12、在进行编译时是以源程序文件为对象进行的【分别对各源程序文件进行编译得到相应的目标程序,然后再将这些目标程序连接成为一个统一的二进制可执行程序】13、C语言的这种特点使得容易实现程序的模块化14、一个函数名后面必须跟一对圆括号,括号内写函数的参数名及其类型。
如果函数没有参数,可以写void或空括号【如int main(void)或int main()】15、void dump(){}它是一个空函数,但是是合法的16、程序总是从mian函数开始执行的,不管位置在哪儿17、程序中对计算机的操作是由函数中的C语句完成的18、二进制目标程序在visual C++中的后缀为.obj19、可执行程序在visual C++中的后缀为.exe20、一个源程序经过编译后得到的目标程序要经过连接阶段与函数库进行连接才能生成可执行文件21、程序设计的任务:①问题分析②设计算法③编写程序④对源程序进行编辑、编译和连接⑤运行程序,分析结果⑥编写程序文档第二章算法1、对数据的描述:在程序中要指定用到哪些数据类型以及这些数据类型和数据的组织形式,这就是数据结构。
C语言学习入门笔记之数组

数组笔记在程序设计中,把具有相同类型的若干变量按有序的形式组织起来。
这些按序排列的同类数据元素的集合称为数组。
在C语言中,数组属于构造数据类型。
一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。
因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。
1.一维数组的定义和引用1.一维数组的定义方式在C语言中使用数组必须先进行定义。
一维数组的定义方式为:类型说明符数组名[常量表达式];其中:类型说明符是任一种基本数据类型或构造数据类型。
数组名是用户定义的数组标识符。
方括号中的常量表达式表示数据元素的个数,也称为数组的长度。
例如:int a[10]; 说明整型数组a,有10 个元素。
float b[10],c[20]; 说明实型数组b,有10个元素,实型数组c,有20个元素。
char ch[20]; 说明字符数组ch有20 个元素。
对于数组类型说明应注意以下几点:1)数组的类型实际上是指数组元素的取值类型。
对于同一个数组,其所有元素的数据类型都是相同的。
2)数组名的书写规则应遵循标识符命名规则。
3)数组名不能与其它变量名相同。
例如:main(){int a; float a[10];……}是错误的。
4)方括号中常量表达式表示数组元素的个数,如a[5]表示数组a 有5 个元素。
但是其下标从0 开始计算。
因此5 个元素分别为a[0],a[1],a[2],a[3],a[4]。
5)常量表达式中可以包括常量和符号常量,不能用变量来表示元素的个数,也就是说,C语言不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值。
例如:#define FD 5 main(){int a[3+2],b[7+FD];……}是合法的。
但是下述说明方式是错误的。
main(){int n=5; int a[n];……}6)允许在同一个类型说明中,说明多个数组和多个变量。
c语言重点笔记

c语言重点笔记C语言重点笔记一、基础语法1.注释:用于解释代码,不会被编译器执行。
单行注释以“//”开头,多行注释用“/* */”包围。
2.变量:用于存储数据。
定义变量时需要指定类型和名称,如int num;赋值时使用等号,如num=10;也可以在定义时进行赋值,如int num=10;3.数据类型:C语言提供了基本的数据类型,包括整型、浮点型、字符型等。
4.运算符:C语言提供了各种运算符,包括算术运算符、关系运算符、逻辑运算符等。
5.控制语句:C语言提供了各种控制语句,包括条件语句、循环语句等。
二、函数1.函数定义:函数是一段可重复使用的代码块。
定义函数需要指定返回值类型、函数名和参数列表。
如int add(int a, int b) { return a + b; }2.函数调用:调用函数时需要使用函数名和参数列表,并根据返回值类型进行接收。
如int result = add(1, 2);3.递归函数:递归是一种特殊的函数调用方式,在函数内部调用自身。
需要注意避免死循环。
三、数组1.数组定义:数组是一组相同类型的数据。
定义数组时需要指定类型和长度,如int arr[5];2.数组初始化:可以在定义时进行初始化,如int arr[5] = {1, 2, 3, 4, 5};3.数组访问:使用下标访问数组元素,下标从0开始,如arr[0]表示数组的第一个元素。
4.多维数组:多维数组是由一维数组组成的。
二维数组可以看作是一个矩阵,定义时需要指定行数和列数。
四、指针1.指针定义:指针是一个变量,用于存储另一个变量的地址。
定义指针时需要指定类型和名称,如int *p;2.指针运算:可以对指针进行加减运算,表示移动指针位置。
3.指针与数组:可以使用指针访问数组元素,如int *p = arr; p[0]表示arr[0]。
4.空指针:空指针是没有被初始化的指针。
五、结构体1.结构体定义:结构体是一种自定义数据类型,可以包含多个不同类型的成员变量。
C语言学习笔记(004)-数组名和数组首地址(转)

C语⾔学习笔记(004)-数组名和数组⾸地址(转)⼀个变量有地址,⼀个数组包含若⼲元素,每个数组元素都在内存中占⽤存储单元,它们都有相应的地址。
指针变量既然可以指向变量,当然也可以指向数组和数组元素(把数据起始地址或某⼀元素的地址放到⼀个指针变量中)。
所谓数组的指针是指数组的起始地址,数组元素的指针数组元素的地址。
这种指针变量的定义与以前介绍的指向变量的指针变量相同。
应当注意,如果数组为int型,则指针变量亦应指向int型。
规定数组名代表数组的⾸地址,也就是第⼀个元素的地址。
因此,下⾯两个语句等价:p=&a[0];p=a;注意数组a不代表整个数组,上述"p=a;"的作⽤是"把a数组的⾸地址赋给指针变量p",⽽不是"把数组a各元素的值赋给p"。
在定义指针变量时可以赋给初值:int*p=&a[0];它等效于:int*p;p=&a[0];当然定义时也可以写成int*p=a;它的作⽤是将a的⾸地址(即a[0]的地址)赋给指针变量p(⽽不是*p)。
假设p已定义为指针变量,并已给它赋了⼀个地址,使它指向某⼀个数组元素。
如果有以下赋值语句: *p=1;表⽰对P当前所指向的数组元素赋以⼀个值(值为1)。
C规定对p+1指向数组的下⼀个元素(⽽不是将p值简单地加1)。
如果p的这初值为&a[0],则: (1)p+i和a+i就是a[i]的地址,或者说,它们指向a数组的第i个元素。
(2)*(p+i)或*(a+i)是p+i或a+i所指向的数组元素,即a[i]。
(3)指向数组的指针变量也可以带下标,如p[i]与*(p+i)等价。
根据以上叙述,引⽤⼀个数组元素,可以⽤: (1)下标法,如a[i]形式; (2)指针法,如*(a+i)或*(p+i)。
要输出各元素的值有三种⽅法:○1下标法○2通过数组名计算数组元素地址,找出元素的值。
○3⽤指针变量指向数组元素。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数组2010-3-29 22:40一维数组的定义和一维数组的引用内存中一串连续的存储单元(变量),叫数组。
指针移动和比较只有在一串连续的数组中才有意义。
当数组中每个变量只带一个下标时,为一维数组。
定义一个一维数组:类型名数组名【常量表达式】如:int a[8];说明:①定义一个一维整型名为a的数组。
②方括号中规定此数组有8个元素,(a【0】-a【7】),不存在a【8】这个元素。
③a数组中每个元素均为整型,且每个元素只能存放整型。
④每个元素只有一个下标,且第一个元素的下标总为0。
⑤c编译程序,为a数组开辟8个连续存储单元。
3)在定义数组语句中,可以有多个数组说明符;它们用逗号隔开。
例:double a【22】,v【100】,u【5】,a,b,c;注:双精度型每个单元占用8个字节的存储空间。
另外,也可以和普通变量一起定义。
用逗号分隔开。
2010-3-23 10:29一维数组元素的引用21)引用形式:数组名【下标表达式】可以是:常量,变量,表达式。
如:double x【8】则x【0】x【j】x【i+k】均合法2)(1)一个数组元素实际上就是一个变量名,代表内存中的一个存储单元。
我们可以把数组元素看做一个变量名来处理。
(2)一个数组不能整体引用,数组名中存放的是一个地址常量,它代表整个数组的首地址。
当学习指针时,引用的变量的地址,就是变量中第一个字节的地址。
数组的首地址也是它的第一个元素的第一个字节的地址,即它的首地址。
数组的首地址存放在数组名中。
所以说,数组名就代表一个地址。
数组名是一个地址值。
(3)在引用数组元素时,数组元素下标表达式必须是整数,下标表达式下限为0.系统并不自动检验数组元素下标是否越界,因此编程时要注意。
如:double a,b; int c[10];a=2.0;b=3.0;则a[i]; 是不合法的。
给数组赋初值时,如果所赋初值少于元素个数时,后面的元素补为0,字符补为’\0’可以通过赋初值来定义一个数组的大小。
如:int a[]={0,0,0,0,0}; 相当于:a[5]={0};一维数组的初始化void main(){int i,j,a[30];for (i=0,j=1;i<30;i++,j+=2)a[i]=j;for (i=0;i<30;i++){if (i%10==0) printf(“\n”);/*i等于10,到了十,输入回车。
因为0-9就是十个*/printf(“%d, ”,a[i]);}for (i=29;i>=0;i--){printf(“%d, ”,a[i]);if (i%10==0) printf(“\n”);/*先输出第i=20这个元素,再输入回车。
*/ }getch();} //2010年10月14日14:43:15 上次是怎么做的啊,错了那么多。
1一维数组和数组元素的地址1)数组和指针的比较(1)指针变量的地址:指向内存中一个存储单元的第一个字节的地址。
数组名的地址值,就是该数组的第一个元素的第一个字节的地址。
(2)指针变量有基类型,相当于数组的类型名。
(3)指针变量的地址值不可改变,即指针变量指向的存储单元的地址值是固定的,不可改变,如int *p,a;p=&a;则变量a的地址是不可改变的。
也不可给数组名的地址重新赋值。
如数组名为a的数组:a=&x;或a++等给数组名重新赋值都是错误的。
一旦定义,a永远指向a数组的首地址。
(4)虽然不可改变a的内容(地址),但可以对数组名加一个整数的办法,来依次表达该数组中不同元素的地址。
如:a 代表&a【0】数组的首地址,也是a[0]的地址//首地址a+1 代表&a【1】数组元素a[1]的地址//在指针中,1代表一个存储单元a+2 代表&a【2】...... //注意:不是a=a+1,而是a+1例:main(){int a[10],*p,x,k;for(k=0;k<10;k++) p=a+k; //a是数组的首地址,p=a+k;则遍历了数组中每个元素for (k=0;k<10;k++) scanf("%d",a+k); //输入每个元素的值for (k=0;k<10;k++) printf("%d\n",a[k]); //打印每个元素的值getch();}p=&a[0]; 等价于p=a;以下语句等价:for(p=a,k=0;k<10;k++) p++;//将数组a的首地址赋给指针p,k从0到9,p++将遍历数组中每个元素的地址。
依次指向数组a1,a2,a3 (9)for(p=a,k=0;k<10;k++) {scanf("%d",p);p++;}for(p=a,k=0;k<10;k++) scanf("%d",p++);//什么自加自减运算符,当++在后面时,当前表达式的值不变,元素加1.for(p=a;p-a<10;p++) scanf(“%d”,p);2010.4.2通过数组首地址指针带下标的指针引用一维数组元素。
引用一维数组中的某一个元素的方法:* :求当前地址的内容& :求当前内容的地址1 a【i】2 *&a【i】//*在定义语句时代表定义一个指针变量,当在执行语句部分时代表间址运算符,引用一个指针变量指向的地址的内容。
&叫求地址运算符,求当前内容的地址。
所以*和&就像乘号和除号一样,互相抵消了。
3 *(a+i):在数组名的地址上,加上i个存储单元。
代表第(i+1)个元素,用间址运算符引用它,即等价于a[i]4 当(p=a;||p=&a【0】)则*(p+i)等价于a[i]5 当(p=a;||p=&a[0]) 则p[i] 等价于a[i] //方括号不仅表示数组元素的记号,也是一种运算符.总结:引用一维数组元素a[i] 的四种方法:a[i] *(a+i) 若p=a, 则p[i] *(p+i) 表示a[i]的地址的方法:&a[i] a+i p+i 都表示当前数组第i个元素的地址。
以下代表什么:*(P--) a[i--] *--p a[--i]注:自加自减运算,p-- 等价于:m=p-- m=p p=p-1 //先赋值,(先取值)再改变--p 等价于:m=--p p=p-1 m=p //先改变,再赋值。
(再取值)数组名a和指向数组的指针p的区别.前者不可变,不可运算,后者可以赋值,运算. a++ 是个赋值表达式3)逐个输出a数组中元素的值.for(k=0;k<10;k++) printf("%4d",*(a+k));for(k=0;k<10;k++) printf("%4d",a[k]);for(p=a,k=0;k<10;k++) printf("%4d",*(p+k));for(p=a,k=0;k<10;k++) printf("%4d",p[k]);for(p=a,k=0;k<10;k++) {printf("%4d",*p);p++} //p++,即依次指向每一个元素。
函数之间对一维数组和数组元素的引用及一维数组实例11数组元素作为实参在调用函数时,数组元素可以作为实参传送给形参,每个数组元素实际上代表内存中的一个存储单元和普通变量一样,对应的形参必须是类型相同的变量。
2数组名作实参如果用数组元素作实参的话,数组元素的值,可以传送给形参中相同类型的一个变量,在函数中只能对该变量进行操作,而不能直接引用对应的数组元素。
(只能改变形参的值,而不能改变实参即数组元素的值)。
数组名也可以作为实参传送,对应的形参就应该是一个指针变量来引用调用函数中对应的数组元素,从而达到对调用函数中对应数组元素进行操作的目的。
但数组名本身是一个地址值,因此,对应的形参就应当是一个指针变量。
(该指针变量指向主调函数中数组的首地址)该指针变量就可以来引用主调函数中对应的任何一个数组元素,从而达到对主调函数中对应的数组元素进行操作的目的。
引用方法:a【i】;*(a+i);p【i】;*(p+i)例:编写程序,通过函数给数组输入若干大于等于0的整数,用负数作为输入结束的标志;调用函数输出该数组中的数据。
#define M 100int arrin(int *a){int i=0;scanf("%d",&a[i]);while(a[i]>=0){i++;scanf("%d",&a[i]);}return i;}arrout(int *a,int n){int i;for(i=0;i<n;i++){printf("%d,",a[i]);}}main(){int a[M],n;n=arrin(a);arrout(a,n);getch();}2010年10月16日8:46:45 自己做的(修改后)#define M 100int main(void){int a[M] ,n;n=input(a);output(a,n);getch();}int input(int *a){int i=0;scanf("%d",a+i);while(*(a+i)>=0){i++;scanf("%d",a+i);}return i;}int output(int *a,int n){int i;for(i=0;i<n;i++){printf("%d,",a[i]);}}上例中,在数组只输出正数,作为结束标志的负数不输出。
#define M 10int main(void){int a[M]={0};input(a);output(a);getch();}int input(int *a){int i=0;scanf("%d",a+i);while(*(a+i)>=0){i++;scanf("%d",a+i);if(a[i]<0) {a[i]=0;break; } /*作为结束标志的负数赋值为0然后结束*/?还是有很多问题啊。
}}int output(int *a){int i;for(i=0;i<M;i++){printf("%d,",a[i]);}}当实参为数组名时,形参可以有3种表示方法:1指针2一个数组的形式3直接用数组名。