/*
第八章 地址和指针
说明:每当我们使用一个变量系统就必须要给他开辟一个存储单元。系统要对它的值
进行记录。每时每刻的记录,怎样进行记录呢?系统会自动的开辟一个地方将该
变量监督起来,观察和记录它的变化。
变量的定义就是给变量开辟存储空间的地址!
存储空间是什么东西呢??
:计算机有一种硬件叫内存条,计算机的内存是以字节为单位的一片连续的存储
空间,每一个字节都有一个编号,这个编号就称为内存地址。
内存中的空间是连续的,地址号也是连续的,并且都是用二进制数来表示的;
定义变量就是向电脑系统交互,需要多大的空间存储数据,不能多页不能少;
指针:用来存放一个变量在内存中的地址,当要调用这个变量的时候能迅速的找到;
用来存储一个变量地址的变量就叫指针变量;
1、指针变量的定义和指针变量的基本类型:
一:格式:
类型名 *指针变量名1, *指针变量名 2....
例如:
int *pi,*pj;
与之前不一样的地方就是在变量的前面加上了一个*.*是一个说明符,
用来说明该变量是指针变量。*号省略的话就和普通的变量一样了。
int *pi; 只能存放整数型变量的地址
char *ch; 只能存放字符变量的地址;
pi=&a; 让指针存放一个变量的地址;
& 取址符, * 叫指针运算符;
存放指针变量地址的一个对象?
int **p,*s;
p=&s;
**p :是专门用来存放指针地址的,它就是指向指针的指针;
2.1、给指针变量赋地址值
1、一个指针变量可以通过不同的方式获得一个确定的地址值,从而指向一个具体的对象;
2、可以通过赋值运算,把一个指针变量中的地址值赋给另一个指针变量,从而
使这两个指针指向同一地址;
例子:int k,*p,*q;
q=&k; p=q; //指针变量的两边的类型必须是一致的;
3、空指针,不是指向地址为0 存储单元,而是一个有确定的值"空";
2.2、对指针变量的操作:
C 语言提供一个称为“间接运算符”的单目运算符:“*”当指针变量中存放了
一个确切的地址值时,就可以用“间接运算预算符”通过指针来引用该地址的存储单元;
例如:int *p,i=10,j;
p=&i;
指针赋值:j=*p;
对上面这个例子的理解:j变量的值是有指针指向的空间中的值赋予的。
这里的*p 代表指针p中存放的变量i的地址中的值。*不是乘而是用来说明指针的说明符;
再如:j=*p+1; 代表指针p指向的空间中的值加1后的值给了变量j;
再如;int *p,k=0;
p=&k;
*p=100;
*p+=1;
解释:当*p 出现在赋值号左边时,代表的是指针所指的存储单元,当
*p 出现在赋值号右边的时候,代表的是指针所指的存储单元的内容;
3、移动指针:
所谓移动指针就是对指针变量加上减去一个整数,或通过运算符,使
指针指向相邻的存储单元;
注:对指针进行加减运算时,数字“1”不再代表十进制数1,而是指一个单位存储单元长度。
这个单元到底有多长,要看存储数据的类型了。
例:如果是int则代表1个存储单元长度就是位移四个字节,
char 类型 1个存储单元就是1个字节
double 1 8个字节;
3.2、函数之间地址值的传递
1、形参为指针变量时参数和形参之间的数据传递:
*** 若函数的形参为指针类型,调用该函数时,对应的实参必须是类型相同的地址值或者
是已指向某个存储单元的指针变量;
int *a;----整型的指针变量;
2、通过传送地址值在被调用函数中直接改变调用函数中的变量的值
3、指针的相互的转换,那么指针对应的值也跟着改变!
*/
#include<stdio.h>
int myadd(int *a,int *b)
{
int sum;
return *a+*b;
}
//传递地址值
void swap(int *a,int *b);
void order(int*,int*);
main()
{
/*
int a,b,min,*pa,*pb,*min;
pa=&a;pb=&b;min=&min; //指针指向具体的变量
scanf("%d%d",pa,pb); //直接放入两个指针,存储的是地址 *pa *pd 代表的 是指针地址里面的值
printf("a=%d,b=%d\n",a,b);
//printf("a=%d,b=%d\n",*pa,*pb); //通过空间地址找值
*pmin=*pa;
if(*pa>*pb)
{
*pmin=*pb;
}
printf("变量值:min=%d\n",min);
//printf("通过指针空间地址里面的值:min=%d\n",*min);
*/
//函数之间形参传值
int x,y,z;
int *q,*p; //定义指针变量
q=&x,p=&y; // 给指针变量地址取址
printf("enter x,y.\n");
scanf("%d%d",&x,&y);
z=myadd(q,p);
printf("%d+%d=%d\n",x,y,z);
printf("指针案列如下:\n");
}
void swap(int *a,int *b) //指针变量 存储地址
{
int t;
printf("");
t=*a; *a=*b;*b=t;
printf("");
}
//判断
// 参数传递时:加*表示传递的是地址值,不加* 表示传递的是地址
void order(int *a,int *b)
{
if(*a>*b)
{
swap(a,b); //当传递的是指针存放的地址值
}
}
分享到:
相关推荐
C 语言初级入门--地址和指针 C 语言初级入门--二维数组和指针 C 语言初级入门--概念简介 C 语言初级入门--关系运算与逻辑运算 C 语言初级入门--函数、字符常量 C 语言初级入门--循环 C 语言初级入门--一维数组和指针...
本资源包" C语言入门学习(初级-全)"显然是为了帮助初学者系统地学习和掌握C语言的基础知识。 在压缩包中包含了一系列的PPT文件,这些文件很可能是教学课件,每个文件对应一个或多个C语言的学习主题。以下是对这些...
《明解C语言(初级篇)》是柴田望洋所著的一本C语言入门教材,它以易懂的语言和详尽的例子向初学者介绍了C语言的基础知识。本书是专为对C语言感兴趣的编程初学者设计,目的是让他们能够从零开始学习C语言,逐步建立...
本教程电子书是为初级入门者设计的,旨在帮助初学者快速掌握C语言的基本概念和编程技巧。 教程中可能包含以下几个方面的内容: 1. **C语言简介**:介绍C语言的历史、特点以及在计算机领域中的应用,为学习者建立...
总结来说,C++初级入门涉及的内容广泛,包括基本语法、函数、面向对象特性、模板、异常处理和预处理器等。通过系统学习和实践,初学者可以逐步掌握这个强大的编程工具,为未来更深入的编程学习打下坚实基础。
初级阶段:C语言基础入门:1 C语言的发展历史,环境安装及调试2 数据类型与运算符-scanf3 进制讲解-浮点数-字符型4 混合运算-scanf读取标准输入原理5 scanf循环读取-多种数据类型混合读取-printf讲解6 运算符与...
学习C语言是许多程序员入门的重要步骤,它以其简洁、高效和强大的底层控制能力深受程序员喜爱。遵循以下七条准则,可以有效地帮助你掌握C语言: 1. **理解基础概念**:首先,你需要了解C语言的基本构成,包括变量、...
本主题“单片机开发C语言初级程序”主要关注使用C语言进行单片机编程的入门知识,包括基本概念、编程结构以及常见的应用实例,如蜂鸣器控制和流水灯设计。 C语言是一种强大的、低级的编程语言,广泛用于单片机编程...
指针是C语言的一大特色,它可以存储内存地址,实现对内存的直接操作。通过指针,可以实现高效的数据传递、动态内存分配以及对数组和结构体的灵活操作。 四、数组与字符串 数组是一系列相同类型数据的集合,可以按...
C语言是一种广泛应用于系统开发、软件工程和嵌入式系统的编程语言,因其高效、灵活性和对硬件的直接访问能力而受到程序员的青睐。本资源包"**C语言初级小程序(含代码)**"旨在帮助初学者掌握C语言的基础知识,为...
C语言是一种广泛应用于系统编程、应用软件开发、嵌入式系统和游戏开发的高级编程语言。它的设计目标是提供一种高效、灵活且接近机器代码的编程工具。本教程旨在为初学者提供C语言的基础知识,让你能够理解并掌握...
标题中的“lecture0-1_C语言_入门_slice_”表明这是一个关于C语言入门的讲座系列,其中可能包含了一些初级到中级的编程概念。"slice"这个词在编程中通常指的是数组或列表的一部分,但在C语言中并没有直接的slice概念...
这份“最新版Go语言入门详细资料”是一套全面的学习资源,分为初级、中级和高级阶段,旨在帮助初学者快速掌握Go语言,并逐步进阶到高级应用。资料涵盖了以下几个关键知识点: 1. **环境搭建**:在学习任何编程语言...
王桂林老师的教程以其易懂性和实用性著称,无论是对C语言的初级探索,还是对C++的深入学习,这些资源都能提供有力的支持。通过系统地学习和实践,读者将能够熟练地运用这两种语言进行程序设计,为自己的编程生涯开启...
"C语言从入门到精通第1-15章"涵盖了C语言学习的初级到中级阶段,包括了基本语法、数据类型、控制结构、函数、数组、指针等多个核心概念。 1. **基本语法**:C语言的学习首先从了解它的基本结构开始,包括注释、变量...
C语言作为计算机科学中的基础编程语言,对于理解计算机工作原理和深入学习其他高级编程语言具有重要的意义。 这本书首先介绍了C语言的历史背景和基本特点,让读者对C语言有一个初步的认识。接着,书中详细讲解了...
- **C语言的特点**:C语言是一种中级语言,结合了低级语言的效率和高级语言的易用性。它以简洁、高效和可移植性著称,是许多现代编程语言的基础。 - **C语言的地位**:C语言被视为区分编程新手和高手的分水岭,...
面向对象编程和可视化集成开发工具的发展,使很多曾经非常流行的编程语言影响下降甚至逐步消失,但有一种语言是例外,它就是C语言,时光流逝丝毫没减低C的魅力,它的风采依然如旧。 C语言已经深深的进入各种操作...
总的来说,"C语言初级教程 讲座"涵盖了C语言的基础知识和核心概念,适合初学者入门。通过学习和实践,你将能够编写出具有逻辑性和有效性的C语言程序。记得,编程最重要的是动手实践,不断编写代码才能更好地理解和...