/*
第九章 数组
数组:多个相同类型的变量被存储在一片连续的存储单元中;
1、一维数组的定义和多维数组元素的引用:
定义:
当数组中的每个元素只带有一个下标时,这样的数组为一维数组;
格式:类型名 数组名[整型常量表达式] ; int a[10]
说明:基本的语法同java
注:在内存中给数组中每个成员开辟一个存储单元。总计大小:
10*4=40个字节。
a、当同时定义多个数组时彼此之间用逗号隔开:double w[22],v[4],u[6];
2、一维数组的引用:
格式:数组[下标表达式] 起点:0 上限:长度前一位;
b、在C语言中规定数组名是一个地址常量,它代表整个数组的首地址。
例如:int *p;int a[10]; p=a; 或者:p=a(p=&a[0])
3、一维数组的初始化:int a[8]={1,2,3,4}; //保持类型是一致的
二:一维数组和数组元素的地址:
前言:定义的数组名可以认为是一个存放地址的指针变量,其中的地址值是
数组第一个元素的地址,也就是数组所占有一串连续存储单元的起始地址。
重要的是:这个指针变量中的地址值不可改变,也就是说,不可以给数组重新
赋值。因此,也可以认为数组名是一个地址常量;
例如:int a[10],*p; p=a+4;====p=&a[4];
再如:for(k=0;k<10;k++){ p=a+k;}
在循环中没有改变数组名a中的内同,但是通过表达式,a+k
逐一给出了a数组中每个元素的地址,使p依次指向a数组中的每一个元素;
给数组中每一个元素赋值:
for(k=0;k<10;k++){
scanf("%d",a+k);
}
p=a 或 p=&a[0] 表达的意思是一样的,都是指针p指向了数组a的首位值 ;
p++:先向地址中赋值,然后指针移动;
、
总结:表示数组元素s[i]的表达式应当有:
s[i] *(s+i) *(p+i) *p[i]--这个前提,指针必须指向首地址;
当p=s+2 时,p=&a[2] *p[0]就是a[2]的值了;
5、函数之间对一维数组和数组元素的引用
a、数组元素作为实参
每个数组元素实际上代表内存中的一个存储单元。故和普通变量一样,对应的形参保持类型一致;
数组元素的值可以传送给该变量,在函数中只能对该变量进行操作,而
不能直接饮用数组元素 ,更不能在函数中改变对应数组的值;
b、数组名作实参
数组名可以作为实参传送, 当时组名是一个地址值,因此对应的形参就是一个指针变量
此指针变量的基本类型必须和数组的类型一致;这样就可以通过指针变量
来引用调用函数中对应的数组元素,从而达到对调用函数中对应的数组元素进行
操作而改变其中的值;
当数组作为实参时,对应的形参除了是指针外,还可以用另外两种形式;
arrin(int a[]);
arrant(int a[M]);
c、数组元素地址作为实参
因为是地址值,那么对应的形参也应是基类型的指针变量;
*/
#include<stdio.h>
#define M 100 //宏定义 一般定义大写常量
void arrout(int *,int); //定义函数逇说明部分
int arrin(int *);
#define NUM 8
void invert(int *,int);
void priout(int *,int);
main()
{
/*
int a[10];
int i,*p;
p=a; //表示指针向了a
for(i=0;i<10;i++)
{
//p++ 移动
scanf("%d\n",p++); //将获得的值放到地址里面,且指针指向了数组;
printf("a[%d]=%d\n",i,*p); //此时指针的位置没有发生变化 只保存了数组首位的值
}
int s[M] ,k;
k=arrin(s);
arrout(s,k);
*/
//一维数组应用 题目:将数组中的数按颠倒的顺序重新存放,
//操作的时候只能借助一个存储单元,不得另外开辟数组;
int a[NUM] = {10,21,31,40,50,60,70,80};
print("输出数组中的内容:");
priout(a,NUM); //3
invert(a,NUM); //4
printf("输出数组中调换后的内容:");
priout(a,NUM);
}
//3
void priout(int s[],int n)
{
int i;
for(i=0;i<n;i++)
{
printf("%4d",s[i]);
printf("\n");
}
}
//4
void invert(int *a,int n)
{
int i,j,t;
i=0;
j=n-1;
while(i<j)
{
a[i]=a[j];
a[j] = t;
i++; t=a[i];
j--;
}
}
int arrin(int *a)
{
int i,x;
i=0;
scanf("%d",&x);
while(x>=0)
{
*(a+i)=x;
i++;
scanf("%d",&x);
}
return i;
}
void arrout(int *a,int n)
{
int i;
for(i=0;i<n;i++)
{
printf(((i+1)%5==0)?"%4d\n";"%4d",*(a+i));
printf("\n");
}
}
分享到:
相关推荐
C 语言初级 函数与指针 以及结构体的介绍 C 语言初级 位运算 C 语言初级 文件操作 C 语言初级入门--地址和指针 C 语言初级入门--二维数组和指针 ...C 语言初级入门--一维数组和指针 C 语言初级入门--字符串
4. `ppt(c05).ppt` - 可能介绍数组,包括一维和多维数组,以及如何在程序中操作和处理数组数据。 5. `ppt(c07).ppt` - 可能讲解指针,这是C语言的一大特色,包括指针的定义、操作和用途,以及通过指针进行动态内存...
初级阶段:C语言基础入门:1 C语言的发展历史,环境安装及调试2 数据类型与运算符-scanf3 进制讲解-浮点数-字符型4 混合运算-scanf读取标准输入原理5 scanf循环读取-多种数据类型混合读取-printf讲解6 运算符与...
### Java基础语法讲解下集——函数与数组 #### 2.7 函数 **2.7.1 函数的定义** - **定义**: 函数(也称作方法)是在类中定义的一段独立的小... - 第一个一维数组的第二个元素赋值为78的写法是`arr[0][1] = 78;`。
6. **数组**:介绍一维、二维数组的声明、初始化和操作。 7. **函数**:讲述函数的定义、调用、参数传递和返回值。 8. **指针**:深入讲解指针的概念,如何声明、初始化和操作指针,以及指针与数组、函数的关系。 9....
面向对象编程和可视化集成开发工具的发展,使很多曾经非常流行的编程语言影响下降甚至逐步消失,但有一种语言是例外,它就是C语言,时光流逝丝毫没减低C的魅力,它的风采依然如旧。 C语言已经深深的进入各种操作...
二维数组指针变量说明的一般形式为: 类型说明符 (*指针变量名)[长度] 其中“类型说明符”为所指数组的数据类型。“*”表示其后的变量是指针类型。 第十三讲 结构 “结构”是一种构造类型,它是由若干...
- **数组与指针**:理解数组的概念,掌握一维、多维数组的使用;了解指针的特性,学习动态内存分配和释放。 ### 4. MFC应用开发 - **MFC框架**:学习MFC的基本架构,理解消息机制、窗口类、控件类等核心概念。 - *...
总的来说,"C语言初级教程 讲座"涵盖了C语言的基础知识和核心概念,适合初学者入门。通过学习和实践,你将能够编写出具有逻辑性和有效性的C语言程序。记得,编程最重要的是动手实践,不断编写代码才能更好地理解和...
了解一维、二维数组的创建、初始化和操作是数组部分的重点。 四、字符处理 C语言中,字符数据类型(char)用于处理单个字符。标准库中的字符处理函数如scanf和printf可以用于输入和输出字符。此外,字符数组和字符串...
【标题】"gp.zip_c_gp_herselfnaa" 暗示了这是一个与C语言和GP(可能指的是GNUPlot,一种数据可视化工具)相关的学习资料压缩包,由用户"herselfnaa"分享。这个压缩包可能是为了帮助初学者或者自学者了解和掌握C语言...
4. 深入理解数组,包括一维数组、二维数组的声明和操作。 5. 掌握字符串的处理,了解字符串在C语言中的表示和常用操作。 6. 熟悉指针的概念,理解指针的运算和使用,包括指针与数组、函数的关系。 7. 实践文件操作,...
- **一维数组**:创建、初始化和遍历数组的方法。 - **多维数组**:理解二维数组及其操作。 5. **方法**: - **方法定义与调用**:参数传递、返回值类型和void方法。 - **重载**:相同方法名但参数列表不同的...
7. **数组**:介绍一维、二维数组的声明、初始化和操作,以及数组在内存中的布局。 8. **指针**:深入解析指针的概念,包括指针变量的声明、赋值、解引用,以及通过指针操作数组和函数。 9. **字符串**:讲述C语言...
作业可能会涉及一维、二维数组的操作,如遍历、查找、排序等。 6. **指针**:C语言的指针是其强大特性之一,它允许直接操作内存。作业可能涉及指针的声明、赋值、解引用,以及通过指针进行数组和函数参数的传递。 ...
第四章 数组:数组是数据结构中最基础的元素,本章深入讲解了一维数组、二维数组以及多维数组的概念和操作,同时也涉及动态数组(如vector)的使用,强调了数组在存储和处理大量数据时的作用。 第五章 初露锋芒:此...
6. 第六章涵盖了数组,包括一维、多维、字符数组和字符串的使用。 7. 第七章介绍结构体、联合体和枚举类型,这些都是自定义数据类型的工具。 8. 第八章讲解指针和引用,这是C++中非常重要的概念,也是难点之一。 第...
4. 集合与数组:C#支持多种类型的集合,如ArrayList、LinkedList、HashSet等,以及一维、多维数组。课件将介绍这些数据结构的使用场景和操作方式。 5. 异常处理:异常处理是程序健壮性的重要组成部分。C#的try-...
在中国象棋C++手把手教学中,我们将会深入探讨如何利用...阅读《代码的力量 C C 中国象棋程序入门与提高 蒋鹏等.pdf》和《中国象棋.ppt》这两份资料,将有助于你深入理解上述知识点,并逐步构建出自己的中国象棋游戏。