C语言程序入门——初识一维、二维数组 与 函数参数定义概念1.1.3(定义、初始化、引用、类型)

简介: 类型名 数组名 [数组长度];例如: int a [10] 代表整型数组,数组变量名称为“a”,一共有10个整型元素。数组是具有相同类型数据的集合,其中的数据按照一定的顺序排列存放引用数组元素要指定其下标,通俗点就是:说明要第几个数字int main(){return 0;}例如下标为3,即元素a[3]数值为2注:数组计数取值范围是【0,数组长度-1】,而不是从1开始。即上方最后一位只有a[9],而不是a[10]二维数组是最常见的多维数组,主要表示二维表和矩阵。......

 目录

一、数组

1.一维数组定义和引用

定义

引用

一维数组的初始化

2.二维数组的定义和引用

定义形式

引用

二维数组的初始化

二、函数

函数定义

一般形式:

参数传递

函数结果返回

void 不返回结果的函数


一、数组

定义一个数组,需明确数组变量名、数组元素的类型和数组大小(数量)


1.一维数组定义和引用


定义

类型名 数组名 [数组长度];

例如: int a [10] 代表整型数组,数组变量名称为“a”,一共有10个整型元素。

数组是具有相同类型数据的集合,其中的数据按照一定的顺序排列存放


引用


数组元素要指定其下标,通俗点就是:说明要第几个数字

#include<stdio.h>intmain()
{
inta[10]={0,1,2,3,4,5,6,7,8,9};
return0;
}

image.gif

例如下标为3,即元素a[3]数值为2

注:数组计数取值范围是【0,数组长度-1】,而不是从1开始。 即上方最后一位只有a[9],而不是a[10]


一维数组的初始化


和简单变量初始化一样,也可以对数组元素赋初值,一般形式为:

类型名 数组名 [数组长度] = {初值表} ;

注:初值表必须用{}括起来,前边为等(=),后边为分(;)

inta[10]={12,566,44,35,67,45,37,86,46,54};

image.gif

各个初值之间用“,”相隔开

C语言规定,只有静态存储的数组才能初始化,,但一般的C编译系统都允许对动态存储的数组赋初值

静态(static)存储的数组没有初始化,所有数组元素赋0

static int a[3];        等价于        static int a[3]={0,0,0};

也可针对部分初始化,例如a[5]={1,2,3};而后面的两个元素a[3]和a[4]初值为0

对全部元素赋初值时可省略数组长度

#include<stdio.h>intmain()
{
inta[]={0,1,2,3,4,5,6,7,8,9};
return0;
}

image.gif

(一般避免出错,改善程序可读性,都不要省略数组长度)


2.二维数组的定义和引用


二维数组是最常见的多维数组,主要表示二维表和矩阵

定义形式

类型名 数组名 [行长度][列长度];

#include<stdio.h>#include<stdlib.h>intmain()
{
inta[3][4];
system("pause");
return0;
}

image.gif

如上定义了一个二维数组a,3行4列,共12个元素


引用


数组名 [行下标] [列下标]

同一维数组一样,都从0开始计数,先存放第一行,一行满,转入下一行。a[3][4]第一个元素为

a[0][0],第一行最后一个元素为a[0][3],依次类推


二维数组的初始化


二维数组赋初值有两种方法:

①分行赋初值

即分隔开每一行进行赋值

类型名 数组名 [行长度][列长度]={{第一行初值表}, {第二行初值表}, ··· {第K行初值表}···};

int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};

image.gif

注:每一行的初值表都需要用 { } 括起来,而且初值表间也必须使用“,”相隔开

也可对部分赋初值而其余元素为0:

int a[3][3]={{1,2,3},{},{7,8,9}};

image.gif

分行赋初值时,初值表中列出了全部行,就可以省略行长度

②顺序赋初值

同一维数组一致,但需要注意某一行某一列的初值是否与希望赋予的值相一致

int a[3][3]={1,2,3,4,5,6,7,8,9};

image.gif

对部分赋初值时,要为不赋初值的元素赋予0,例如只给a[0][2]和a[2][2]赋初值

int a[3][3]={0,0,3,0,0,0,0,0,9};

image.gif


二、函数


函数是完成特定工作的独立程序模块,包括两种:库函数,自定义函数

例如scanf()和printf()等为库函数,下面的max则为自定义函数 ⬇⬇⬇

#include<stdio.h>intmain()
{
intmax(intx,inty);
inta,b,c;
printf("请输入两个数");
scanf("%d,%d",&a,&b);
c=max(a,b);
printf("max=%d",c);
return0;
}
intmax(intx,inty)
    {
intz;
if(x>y)z=x;
elsez=y;
return(z);
    }

image.gif


函数定义


一般形式:

函数类型 函数名 (形式参数表)            /*函数首部*/

{

       函数实现过程                                  /*函数体*/

}

doublea(doubleA,doubleB)

image.gif

表面函数类型为double,函数名为a,有两个形参A和B


参数传递


函数定义时位于首部的参数被称为形参,主调函数的参数被称为实参,两者必须一一对应,数量相同,类型尽量一致

函数结果返回

函数体内的结果可用 return 表达式;将结果传回到main()函数中

return语句的作用有两个:

一、结束函数的运行

二、带着运算结果(表达式的值)返回主调函数

注:return语句只能返回一个值,如果函数产生了多个运行结果,将无法通过return返回


void 不返回结果的函数


void类型函数,表示不返回结果,函数体中可以没有表达式return语句,void类型的函数虽然不直接返回一个值,但它通常以屏幕输出等方式体现

例如在函数中:

void 函数名(形参表)

{

       函数体

       printf(“ ”);

}

可以以printf(“”)形式输出结果,而不是返回主调函数


数组与函数知识点还是有些抽象的,需要多加练习理解

相关文章
|
1月前
|
存储 编译器 C语言
【C语言程序设计——入门】C语言入门与基础语法(头歌实践教学平台习题)【合集】
本文档介绍了C语言环境配置和编程任务,主要内容包括: - **C语言环境配置**:详细讲解了在Windows系统上配置C语言开发环境的步骤。 - **第1关:程序改错**:包含任务描述、相关知识(如头文件引用、基本语法规则)、编程要求、测试说明及通关代码。 - **第2关:scanf函数**:涉及`scanf`和`printf`函数的格式与使用方法,提供编程要求、测试说明及通关代码。 文档结构清晰,涵盖从环境搭建到具体编程任务的完整流程,适合初学者学习和实践。
51 4
|
1月前
|
C语言
【C语言程序设计——入门】基本数据类型与表达式(头歌实践教学平台习题)【合集】
这份文档详细介绍了编程任务的多个关卡,涵盖C语言的基础知识和应用。主要内容包括: 1. **目录**:列出所有关卡,如`print函数操作`、`转义字符使用`、`数的向上取整`等。 2. **各关卡的任务描述**:明确每关的具体编程任务,例如使用`printf`函数输出特定字符串、实现向上取整功能等。 3. **相关知识**:提供完成任务所需的背景知识,如格式化输出、算术运算符、关系运算符等。 4. **编程要求**:给出具体的代码编写提示。 5. **测试说明**:包含预期输入输出,帮助验证程序正确性。 6. 文档通过逐步引导学习者掌握C语言的基本语法和常用函数,适合初学者练习编程技能。
45 1
|
2月前
|
存储 网络协议 编译器
【C语言】深入解析C语言结构体:定义、声明与高级应用实践
通过根据需求合理选择结构体定义和声明的放置位置,并灵活结合动态内存分配、内存优化和数据结构设计,可以显著提高代码的可维护性和运行效率。在实际开发中,建议遵循以下原则: - **模块化设计**:尽可能封装实现细节,减少模块间的耦合。 - **内存管理**:明确动态分配与释放的责任,防止资源泄漏。 - **优化顺序**:合理排列结构体成员以减少内存占用。
196 14
|
2月前
|
C语言
【C语言】全局搜索变量却找不到定义?原来是因为宏!
使用条件编译和 `extern` 来管理全局变量的定义和声明是一种有效的技术,但应谨慎使用。在可能的情况下,应该优先考虑使用局部变量、函数参数和返回值、静态变量或者更高级的封装技术(如结构体和类)来减少全局变量的使用。
52 5
|
2月前
|
存储 NoSQL 编译器
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
指针是一个变量,它存储另一个变量的内存地址。换句话说,指针“指向”存储在内存中的某个数据。
124 3
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
|
2月前
|
编译器 C语言
【C语言】宏定义在 a.c 中定义,如何在 b.c 中使用?
通过将宏定义放在头文件 `macros.h` 中,并在多个源文件中包含该头文件,我们能够在多个文件中共享宏定义。这种方法不仅提高了代码的重用性和一致性,还简化了维护和管理工作。本文通过具体示例展示了如何定义和使用宏定义,帮助读者更好地理解和应用宏定义的机制。
100 2
|
3月前
|
存储 算法 C语言
用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容
本文探讨了用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容,旨在为开发者提供全面的指导和灵感。
93 2
|
3月前
|
存储 算法 C语言
C语言中常见的字符串处理技巧,包括字符串的定义、初始化、输入输出、长度计算、比较、查找与替换、拼接、截取、转换、遍历及注意事项
本文深入探讨了C语言中常见的字符串处理技巧,包括字符串的定义、初始化、输入输出、长度计算、比较、查找与替换、拼接、截取、转换、遍历及注意事项,并通过案例分析展示了实际应用,旨在帮助读者提高编程效率和代码质量。
184 4
|
4月前
|
存储 编译器 C语言
C语言函数的定义与函数的声明的区别
C语言中,函数的定义包含函数的实现,即具体执行的代码块;而函数的声明仅描述函数的名称、返回类型和参数列表,用于告知编译器函数的存在,但不包含实现细节。声明通常放在头文件中,定义则在源文件中。

热门文章

最新文章