`
1140566087
  • 浏览: 560164 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
博客专栏
2c4ae07c-10c2-3bb0-a106-d91fe0a10f37
c/c++ 入门笔记
浏览量:18563
3161ba8d-c410-3ef9-871c-3e48524c5263
Android 学习笔记
浏览量:314512
Group-logo
J2ME 基础学习课程集
浏览量:18795
A98a97d4-eb03-3faf-af96-c7c28f709feb
Spring 学习过程记录...
浏览量:17592
社区版块
存档分类
最新评论

C 语言初级入门--一维数组和指针

阅读更多
/*
第九章   数组

  数组:多个相同类型的变量被存储在一片连续的存储单元中;
  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 语言初级入门--二维数组和指针 ...C 语言初级入门--一维数组和指针 C 语言初级入门--字符串

    C语言入门学习(初级-全)

    4. `ppt(c05).ppt` - 可能介绍数组,包括一维和多维数组,以及如何在程序中操作和处理数组数据。 5. `ppt(c07).ppt` - 可能讲解指针,这是C语言的一大特色,包括指针的定义、操作和用途,以及通过指针进行动态内存...

    深度剖析C编程 初级+中级+高级 基础+数据结构源码+组成原理+操作系统及C语言高级.zip

    初级阶段:C语言基础入门:1 C语言的发展历史,环境安装及调试2 数据类型与运算符-scanf3 进制讲解-浮点数-字符型4 混合运算-scanf读取标准输入原理5 scanf循环读取-多种数据类型混合读取-printf讲解6 运算符与...

    java基础语法讲解下集,适合初级人员入门学习

    ### Java基础语法讲解下集——函数与数组 #### 2.7 函数 **2.7.1 函数的定义** - **定义**: 函数(也称作方法)是在类中定义的一段独立的小... - 第一个一维数组的第二个元素赋值为78的写法是`arr[0][1] = 78;`。

    lecture0-1_C语言_入门_slice_

    6. **数组**:介绍一维、二维数组的声明、初始化和操作。 7. **函数**:讲述函数的定义、调用、参数传递和返回值。 8. **指针**:深入讲解指针的概念,如何声明、初始化和操作指针,以及指针与数组、函数的关系。 9....

    c语言初学者入门讲座

    面向对象编程和可视化集成开发工具的发展,使很多曾经非常流行的编程语言影响下降甚至逐步消失,但有一种语言是例外,它就是C语言,时光流逝丝毫没减低C的魅力,它的风采依然如旧。  C语言已经深深的进入各种操作...

    C语言初学者入门讲座

     二维数组指针变量说明的一般形式为: 类型说明符 (*指针变量名)[长度] 其中“类型说明符”为所指数组的数据类型。“*”表示其后的变量是指针类型。    第十三讲 结构  “结构”是一种构造类型,它是由若干...

    vc++课件 初级入门课件

    - **数组与指针**:理解数组的概念,掌握一维、多维数组的使用;了解指针的特性,学习动态内存分配和释放。 ### 4. MFC应用开发 - **MFC框架**:学习MFC的基本架构,理解消息机制、窗口类、控件类等核心概念。 - *...

    C语言初级教程 讲座

    总的来说,"C语言初级教程 讲座"涵盖了C语言的基础知识和核心概念,适合初学者入门。通过学习和实践,你将能够编写出具有逻辑性和有效性的C语言程序。记得,编程最重要的是动手实践,不断编写代码才能更好地理解和...

    桂林电子科技大学C语言实验报告.zip

    了解一维、二维数组的创建、初始化和操作是数组部分的重点。 四、字符处理 C语言中,字符数据类型(char)用于处理单个字符。标准库中的字符处理函数如scanf和printf可以用于输入和输出字符。此外,字符数组和字符串...

    gp.zip_c_gp_herselfnaa

    【标题】"gp.zip_c_gp_herselfnaa" 暗示了这是一个与C语言和GP(可能指的是GNUPlot,一种数据可视化工具)相关的学习资料压缩包,由用户"herselfnaa"分享。这个压缩包可能是为了帮助初学者或者自学者了解和掌握C语言...

    c_90.rar_visual c

    4. 深入理解数组,包括一维数组、二维数组的声明和操作。 5. 掌握字符串的处理,了解字符串在C语言中的表示和常用操作。 6. 熟悉指针的概念,理解指针的运算和使用,包括指针与数组、函数的关系。 7. 实践文件操作,...

    JAVA 2实用教程(第4版) 1-9课件与1-16代码

    - **一维数组**:创建、初始化和遍历数组的方法。 - **多维数组**:理解二维数组及其操作。 5. **方法**: - **方法定义与调用**:参数传递、返回值类型和void方法。 - **重载**:相同方法名但参数列表不同的...

    C语言基础学习包

    7. **数组**:介绍一维、二维数组的声明、初始化和操作,以及数组在内存中的布局。 8. **指针**:深入解析指针的概念,包括指针变量的声明、赋值、解引用,以及通过指针操作数组和函数。 9. **字符串**:讲述C语言...

    西工大 部分C语言作业

    作业可能会涉及一维、二维数组的操作,如遍历、查找、排序等。 6. **指针**:C语言的指针是其强大特性之一,它允许直接操作内存。作业可能涉及指针的声明、赋值、解引用,以及通过指针进行数组和函数参数的传递。 ...

    sfjsbd1.rar

    第四章 数组:数组是数据结构中最基础的元素,本章深入讲解了一维数组、二维数组以及多维数组的概念和操作,同时也涉及动态数组(如vector)的使用,强调了数组在存储和处理大量数据时的作用。 第五章 初露锋芒:此...

    VC++文档版教程(初级适用)

    6. 第六章涵盖了数组,包括一维、多维、字符数组和字符串的使用。 7. 第七章介绍结构体、联合体和枚举类型,这些都是自定义数据类型的工具。 8. 第八章讲解指针和引用,这是C++中非常重要的概念,也是难点之一。 第...

    著名培训机构的c#ppt

    4. 集合与数组:C#支持多种类型的集合,如ArrayList、LinkedList、HashSet等,以及一维、多维数组。课件将介绍这些数据结构的使用场景和操作方式。 5. 异常处理:异常处理是程序健壮性的重要组成部分。C#的try-...

    中国象棋C++手把手教学

    在中国象棋C++手把手教学中,我们将会深入探讨如何利用...阅读《代码的力量 C C 中国象棋程序入门与提高 蒋鹏等.pdf》和《中国象棋.ppt》这两份资料,将有助于你深入理解上述知识点,并逐步构建出自己的中国象棋游戏。

Global site tag (gtag.js) - Google Analytics