C程序 指针
C语言程序设计实训教程第7章 指 针

12
2)指针与一维数组 【例 7.6】 下列程序的运行结果是( )。[读 程序写结果,重庆市 2001年第 2次等级考试]
13
14
3)指向字符的指针
15
16
17
18
4)指针与二维数组
19
5)指向一维数组的指针(行指针) 【例 7.18】 对 int(﹡p)[5];的正确描述 是( )。[多选题,重庆市 2003年第 1次等级考 试] A. p是数组名 B. p是指针变量名 C. p数组中有 5个元素 D .p指向一个包含 5个元素的整型数组 E. p是一个整型数组 答案:B D
22
7)指针数组 当数组的元素类型为指针时,叫做指针数组。 【例 7.21】 下列程序的运行结果是( )。 [读程序写结果,重庆市 2004年第 2 次等级考试]
23
8)指针做函数参数 指针做函数参数的主要目的是利用在函数中, 利用指针去操作主调函数中的变量。 【例 7.22】 下列程序在数组中同时查找最大 值下标和最小值下标,并分别存放在 main函数的 变量 max和 min中,请填空。[读程序写结果,重 庆市 2003年第 2次等级考试]
10
【例 7.3】 由于指针的数据类型实际上是指定 指针所能指向对象的数据类型,所以不同数据类型 的指针变量不能相互赋值。( )[判断题,重庆市 2005年第 2次等级考试] 答案:对 分析:在某些特定情况下,可以在不同数据类 型指针之间通过强制类型转换赋值。
11
【例 7.4】 若有定义:long intj,﹡p;,则操 作 j=(long int)p;是合法操作。( )[判断题, 重庆市 2004年第 1次等级考试] 答案:对 【例 7.5】 在 C 语言中,程序
电大C语言程序设计 第5章 指针

计算机科学与技术专业本科
第5章 指针
(一) 教学内容 1. 指针的有关概念; 2. 指针的各种运算 3. 数组元素的指针访问方式 4. 数据存储空间的动态存储分配
第5章 指针
(二) 教学要求 了解:指针的有关概念; 理解:指针的各种运算符的含义,一维和二维 元素的指针访问方式,动态存储分配与释放函 数的含义; 应用:会分析含有指针操作的程序。
第5章 指针 5.3 指针运算 3. 间接访问(*) 操作符*可取指针变量所指单元内容,称为间接引用指针。 *(取内容)和&(取地址)为互逆操作。 #include<stdio.h> void main() { int x=10,y=20; int * xp=&x,*yp=&y; int z=*xp+*yp; printf("%d%d\n",*xp,*yp); *xp+=5; printf("%d%d%d\n",*xp,*yp,z); }
第5章 指针 5.2 指针变量 3. 几点说明 (6)在定义指针变量时,可以用const修饰。 指向常量的指针:在指针定义语句的类型前加const, 表指针指向的数据为常量。 结论:const int * pi=&a;(或int const * pi=&a;)中,*pi 为常量,pi为变量,故*pi不能为左值。
第5章 指针 5.2 指针变量 3. 几点说明 (6)在定义指针变量时,可以用const修饰。 例如: const int a=78; const int b=28; int c=18; const int * pi=&a; //int const * pi=&a; *pi=58; //错误,*pi为常量 pi=&b; *pi=68; //错误,*pi为常量 pi=&c; *pi=88; //错误,*pi为常量 c=98;
《C语言程序设计》第8章指针

10.3.3 指针变量和数组作函数参数 数组名作形参时,接收实参数组的起始地址;
作实参时,将数组的起始地址传递给形参数组。
引入指向数组的指针变量后,数组及指向数 组的指针变量作函数参数时,可有4种等价形式 (本质上是一种,即指针数据作函数参数):
(1)形参、实参都用数组名 (2)形参、实参都用指针变量 (3)形参用指针变量、实参用数组名 (4)形参用数组名、实参用指针变量
(4)指针变量的++、--与&、*的结合
对于指针变量的++、--与&、*的结合 使用,关键要注意按照运算符的优先级和 结合性进行。
例如: int a=2, *p; p=&a;
•表达式:(*p)++,按运算符的优先级,等价于 a++。其含义为:取出指针变量p所指向的内存单 元的值(即a的值),a的值加1,送回a的内存单 元,a的值变为3,p的值未发生变化,仍然指向 变量a。
程序说明:printf("%s\n",s);语句 通过指向字符串的指针变量s,整体引
用它所指向的字符串的原理:系统首先输出s 指向的第一个字符,然后使s自动加1,使 之指向下一个字符;重复上述过程,直至遇到 字符串结束标志。
main() { char string[ ]=”I love Beijing.”; printf(“%s\n”,string); }
3.数组元素的引用 数组元素的引用,既可用下标法,也可用
指针法。
10.3.2 通过指针引用数组元素 如果有“int a [10],*p=a;” ,则: (1)p+i和a+i都是数组元素a [i]的地址。
(2)*(p+i)和*(a+i)就是数组元素a [i]。 int a [3]; a [0]——*a a [1]——*(a +1) a [2]——*(a +2)
c语言指针详细讲解

c语言指针详细讲解
C 语言中指针是非常强大的概念,它允许程序直接访问内存中的数据。
指针在 C 语言中最初是被用于解决内存分配问题而提出的,随着 C 语言的发展,指针也变得愈发重要。
指针的本质是一个存储变量地址的变量。
在 C 语言中,指针通常用符号&来表示,例如&x 表示的是 x 变量的地址。
指针变量存储的是一个内存地址,当程序读取指针变量时,它会读取该地址中存储的数据。
C 语言中可以使用指针进行高效的内存操作。
例如,当程序需要对一个数组元素进行修改时,可以直接用指针修改该元素的值,而不必修改数组名本身。
另外,指针还可以用于动态分配内存,这是 C 语言中一个重要的特性。
指针的使用方法比较灵活,但也需要小心使用。
如果不小心处理指针,可能会导致未知的错误。
例如,当指针指向的内存空间被释放后,程序试图访问该内存空间时可能会导致未定义的行为。
因此,在C 语言中,指针的使用需要更加谨慎。
C 语言中指针是一个非常重要和强大的概念,掌握指针的使用方法可以让程序员写出更加高效和安全的代码。
c语言中的指针详解

c语言中的指针详解在C语言中,指针是一种特殊的变量类型,它存储了一个变量的内存地址。
通过指针,我们可以间接访问和修改内存中的数据,这对于一些需要动态分配内存的操作非常有用。
以下是关于C语言指针的一些详细解释:1. 定义指针:使用"*"符号来定义指针变量。
例如,int* ptr; 定义了一个指向整型变量的指针 ptr。
2. 取址操作符(&):取地址操作符(&)用于获取变量的内存地址。
例如,&a 返回变量 a 的地址。
3. 解引用操作符(*):解引用操作符(*)用于访问指针所指向的变量的值。
例如,*ptr 返回指针 ptr 所指向的整型变量的值。
4. 动态内存分配:可以使用相关的库函数(如malloc和calloc)在运行时动态分配内存。
分配的内存可以通过指针来访问和使用,并且在使用完后应该使用free函数将其释放。
5. 空指针:空指针是一个特殊的指针值,表示指针不指向任何有效的内存地址。
可以将指针初始化为NULL来表示空指针。
6. 指针和数组:指针和数组在C语言中有密切的关系。
可以通过指针来访问数组元素,并且可以使用指针进行指针算术运算来遍历数组。
7. 传递指针给函数:可以将指针作为函数参数传递,以便在函数内部修改实际参数的值。
这种传递方式可以避免拷贝大量的数据,提高程序的效率。
8. 指针和字符串:字符串在C语言中实际上是以字符数组的形式表示的。
可以使用指针来访问和操作字符串。
需要注意的是,指针在使用时需要小心,因为不正确的操作可能导致程序崩溃或产生不可预料的结果。
对于初学者来说,理解指针的概念和使用方法可能需要一些时间和练习。
c语言指针用法简单举例

c语言指针用法简单举例C语言是一种广泛应用的编程语言,指针是其最具特色和强大的特性之一。
指针允许程序员直接访问和操作内存中的数据,极大地提高了程序的灵活性和效率。
本文将通过简单的例子介绍C语言中指针的用法。
在C语言中,指针是一个变量,存储的是另一个变量的内存地址。
通过指针,我们可以直接访问和修改对应内存地址中的数据。
下面是一些指针用法的举例:例子1:使用指针传递参数通常情况下,函数中的参数是按值传递的,即函数内部对参数的修改不影响函数外部的变量。
但通过使用指针作为函数参数,可以实现对参数的修改直接影响外部变量的效果。
在上面的例子中,函数modify接受一个指向整数的指针作为参数,并使用解引用操作符*修改指针指向的值。
在main函数中,我们传递了num的地址给modify函数,从而直接修改了num的值。
例子2:动态内存分配C语言中,使用指针来进行动态内存分配是非常常见的。
通过动态分配内存,我们可以根据程序运行时的需求来灵活地分配和释放内存空间。
在上面的例子中,我们首先从用户输入获取要分配的元素数量。
然后,使用malloc函数分配了一个大小为n * sizeof(int)字节的内存块,并将其地址存储在array指针中。
如果内存分配失败,会返回NULL,我们要进行相应的错误处理。
接下来,我们用循环给数组赋值,并输出数组元素。
最后,通过调用free 函数释放了动态分配的内存,以避免内存泄漏。
例子3:指针数组指针不仅可以指向普通变量,还可以指向数组。
这样我们可以通过指针数组来处理多个字符串或多维数组。
在上述例子中,我们定义了一个指针数组fruits,其中每个元素都是一个指向字符串常量的指针。
通过循环,我们逐个访问和打印了指针数组中的字符串。
以上是对C语言指针用法的简单举例。
指针是C语言中非常有用且复杂的概念,它们在内存管理和数据结构等方面起着重要作用。
c语言中指针的用法
c语言中指针的用法在C语言中,指针是一种非常重要的概念,它提供了一种间接访问内存地址的方式。
指针可以用于多种用途,如动态内存分配、参数传递、数组操作等。
首先,指针的创建需要声明变量的类型,并在变量名前加上星号(*)。
例如,int *ptr; 就创建了一个名为ptr的指向整型数据的指针。
指针的一种常见用法是动态内存分配。
通过使用malloc或calloc函数,可以在程序运行时分配内存。
例如,int *ptr = (int*) malloc(sizeof(int)); 就创建了一个指向整型数据的指针,并分配了一个整型变量所需的内存空间。
这种方式可以在需要时动态地分配内存,提高程序的灵活性。
指针还可以用于参数传递。
在函数调用时,可以通过指针将一个变量的地址传递给函数,从而可以在函数内部修改原始变量的值。
这种方式称为通过指针进行函数调用。
例如,void changeValue(int *ptr) { *ptr = 10; } 就是一个通过指针修改变量值的函数。
在函数内部,使用解引用操作符(*)来获取指针指向的变量,并对其进行修改。
另外,指针也可以用于数组操作。
在C语言中,数组名本身就是一个指向数组首元素的指针。
通过使用指针算术运算,可以遍历数组中的元素。
例如,int arr[5] = {1, 2, 3, 4, 5}; int *ptr = arr; 就将数组arr的首地址赋给了指针ptr。
然后,可以使用指针进行遍历,如*ptr,*(ptr+1),等等。
指针还可以用于实现数据结构,如链表、树等。
通过指针的相互连接,可以灵活地操作数据结构中的元素。
需要注意的是,指针的使用需要谨慎,因为指针操作容易引发一些错误,如空指针引用、指针越界等。
在使用指针时,应该保证指针指向有效的内存地址,并且在不再使用指针之后,及时释放相关的内存空间。
总而言之,指针是C语言中非常重要的概念,它提供了一种灵活的方式来操作内存地址。
通过正确地使用指针,可以有效地提高程序的效率和灵活性。
c语言指针的使用
c语言指针的使用在 C 语言中,指针是一种非常重要的数据类型,它可以用来操作内存中的数据。
使用指针可以简化代码、提高程序的效率,同时也可以更好地控制程序的内存分配。
C 语言中字符串本身就是一个指针,指针的指针当然可以指向字符串。
在输出字符串时,应该从指针开始的位置开始输出,直到遇到指向的字符为止,并将其转换为字符数组的数组名来进行输出。
例如,以下代码是正确的用法:```char str[] = "hellow";char str2[20];printf("%s", str);strcpy(str2, str);```在以上代码中,字符串 "hellow" 被存储在内存地址$0x7ffee8f3c18 处,因此可以将该地址作为指针来访问该字符串。
输出该字符串时,应该从指针 str 开始输出,直到遇到指向的字符为止,即 "0"。
因此,可以使用 printf 函数输出该字符串,代码如下:```char str[] = "hellow";char str2[20];printf("%s", str);strcpy(str2, str);```以上代码是正确的用法,它会输出字符串 "hellow"。
指针还可以用于对计算机的内存进行分配和控制。
在函数调用中,指针可以用来返回多个值。
此外,指针还可以用于读取和修改变量的值,以及在程序中传递参数。
指针是 C 语言中一个非常重要的概念,掌握指针的使用可以让程序更加简洁、高效、易于维护。
c语言指针的用法和好处
c语言指针的用法和好处C语言是一种面向过程的编程语言,也被广泛应用于系统编程和嵌入式系统开发中。
在C语言中,指针是一种非常重要的数据类型,也是C语言所独有的特性之一。
指针的用法和好处如下所述:1. 内存管理: C语言中没有自动垃圾回收机制,因此必须手动管理内存。
指针可以帮助我们直接访问和操作内存中的数据,包括动态分配和释放内存。
通过动态内存分配,可以在程序运行时根据需要分配内存空间,有效地管理内存资源,提高内存利用率。
2. 实现数据结构和算法: 指针在实现数据结构和算法时发挥了重要作用。
例如,可以使用指针来构建链表、树等复杂的数据结构。
指针的灵活性和高效性使得C语言成为算法和数据结构的理想选择。
3. 函数传递参数: 在C语言中,函数参数的传递是通过值传递方式,即函数的参数是被复制到函数中的局部变量中进行操作。
而使用指针作为函数的参数,则可以实现传引用的效果,能够直接修改指针所指向的数据。
这样可以节省空间和提高效率,同时也方便实现函数的返回多个值的需求。
4. 字符串处理: 字符串在C语言中是以字符数组的形式存储的,而指针可以方便地对字符数组进行处理。
通过指针可以对字符串进行遍历、查找、修改等操作,简化了字符串处理的过程。
指针还可以用于字符串的动态分配和释放,避免了空间浪费和内存泄漏问题。
5. 高效的数组访问: C语言中,数组的名称表示的是首元素的地址,通过指针可以实现对数组元素的高效访问。
通过指针可以直接计算数组元素的地址,避免了通过数组下标访问的开销。
指针还可以与整数进行运算,实现数组的遍历和操作。
6. 数据结构的动态修改: 动态数据结构常常需要在运行时进行修改,而指针的灵活性能够很好地支持这种需求。
例如,可以使用指针在运行时插入、删除和修改链表的节点。
指针还可以实现数据结构的动态扩容和缩容,提高代码的灵活性和可维护性。
7. 提高性能: 指针能够直接访问和操作内存,因此可以提高程序的执行效率。
通过指针可以避免不必要的数据复制和空间的开销,减少函数调用的传参时间。
c语言中 指针的类型
c语言中指针的类型在C语言中,指针是一种非常重要的概念。
它允许程序员直接与内存进行交互,使得对于数据的处理更加灵活和高效。
在C语言中,指针的类型主要包括以下几种:void指针、空指针、指向基本数据类型的指针、指向数组的指针、指向函数的指针、指向结构体的指针、指向联合体的指针、指向指针的指针等。
接下来,我们将逐一介绍这些指针的类型,并且对它们的用法和特点进行详细的解释。
首先是void指针。
在C语言中,void指针是一种通用的指针类型,可以指向任何数据类型。
它的定义形式为:void *ptr。
使用void指针时,需要进行类型转换才能访问指向的数据。
虽然void指针灵活,但是由于它不知道指向的数据的类型,因此在使用时需要谨慎,尽量避免使用void指针,以免在运行时出现类型不匹配的错误。
其次是空指针。
空指针是一种不指向任何有效数据的指针。
在C语言中,空指针用NULL表示。
在定义指针时,可以使用NULL来初始化指针,表示该指针为空。
使用空指针时要注意对其进行判空操作,以避免出现空指针引用的错误。
另外一种是指向基本数据类型的指针。
在C语言中,可以定义指向整型、浮点型、字符型等基本数据类型的指针。
例如,int *ptr表示一个指向整型数据的指针。
通过指针可以方便地对这些数据进行访问和修改。
指向数组的指针也是C语言中常用的指针类型。
数组名可以视为数组的首地址,因此可以使用指针来指向数组。
例如,int arr[5] = {1, 2, 3, 4, 5}; int *ptr = arr;即可定义一个指向数组arr的指针ptr。
通过指针可以对数组进行遍历和操作,这在C语言中是非常常见的用法。
指向函数的指针是C语言中的另一个重要概念。
函数名也可以视为函数的地址,因此可以使用指针来指向函数。
通过指向函数的指针,可以实现回调函数、动态调用函数等功能,这在C语言中是非常有用的特性。
指向结构体的指针是C语言中用于操作结构体的一种常见方式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
指针的运算
取地址运算符&
“&”是单目运算符,作用是取得变量的地址, 常用于给指针变量赋值。例如有以下定义:
float f1=2.5,f2[]={1.0,2.0,3.0};
float *fp1=&f1,*fp2=f2; 以上定义建立了指向变量 f1 的指针变量 fp1 , 指 向 f2 数 组 首 元 素 的 指 针 变 量 fp2 (相 当 于 fp2=&f2[0])
--(*p) :是 a[3] 元素的值将减一, p 仍然指向 a[3]
C语言程序设计(基于CDIO思想)
指针的关系运算
两个指向同种数据类型的指针可作关系运算, 运算结果为 0 或 1 。指针的关系运算表示它们所 指向的地址之间的关系 < 、 <= 、 >= 、 > :判断两个指针指向的数据位置 的前后关系 ==、!=:判断两个指针是否指向同一个数据 例如: int a=2,b=3,*p1=&a,*p2=&b; if(p1==p2)printf(“p1与p2指向相同!”); if(*p1==*p2)printf(“p1与p2的值相同!”);
C语言程序设计(基于CDIO思想)
内存地址
计算机的内存储器就象 一个巨大的一维数组, 每个数组元素就是一个 存储单元
类似每个数组元素的下 标,每个内存单元都有 一个编号,称为该单元 的地址 注意区分内存单元的地 址与内存单元的值
C语言程序设计(基于CDIO思想)
0000:0000 0000:0001 „„ 4000:1000 4000:1001 4000:1002 4000:1003 „„ A000:C300 A000:C301 „„ FFFF:FFFF
主要内容
1 2 3 4
指针的定义及运算
指向数组的指针 指针操作字符串
指向指针的指针 main()函数的参数
25Leabharlann C语言程序设计(基于CDIO思想)
8.1 指针的引入
输入两个变量,通过函数调用实现其值的交换。
#include”stdio.h” void swap(int *p1,int *p2) { int t; t=*p1; *p1=*p2; *p2=t; } void main() { int x,y; scanf("%d,%d",&x,&y); swap(&x,&y); printf("\n%d,%d",x,y); }
内存空间 线性排列
58 6A
存取数据的方法
在运行一个程序时,程序及其数据(程序、函数、变量 、常量、数组等)都要放在内存储器中。 编译程序根据对象的数据类型,在内存中为其分配一个 或多个连续的存储单元。 在编写程序时,通常是通过名字来使用一个变量或调用 某个函数,而变量和函数的名字与其实际的存储地址之 间的变换由编译程序自动完成,编译程序按变量名查找 其地址,然后对该地址中的内容进行读写操作。
能把一个数组名f2赋给一个指针变量吗?
变量的地址、数组的地址、函数的地址?
C语言程序设计(基于CDIO思想)
指针的运算
间接访问运算符* “ * ”是单目运算符,用于得到指针所指向的变量 值,与“&”互为逆运算,同时出现时可抵消 例如:float f1=2.5,*fp1=&f1,a; a=*fp1; 其中:变量f1的指针(地址)是&f1 对 &fp1 作取值运算的表达式为 *(&fp1), 等效于 直接访问fp1,得到变量f1的地址; 对 fp1 作取值运算的表达式为 *fp1, 等效于直接 访问f1,得到变量f1的值2.5。
第八章 指针
程序中对变量访问时,编译程序按变量名查找其首地 址,然后根据其数据类型所确定的存储单元个数进行 数据的存取操作。前面所介绍的存取变量的方式就属 于该种形式,称为直接访问。而通过变量的指针(地 址)访问变量的形式则称为间接访问。
C 语言程序设计(基于 CDIO 思想) C 语言程序设计(基于 CDIO 思想)
数组名是常量,不能随意改变
C语言程序设计(基于CDIO思想)
数组与指针举例
四种访问数组的方法 例8_4 void main() { int i; int test[]={20,30,90,80}; int *p=test; printf(“arrar test printed \n”); printf(“ array subscript notation \n”); for(i=0;i<=3;i++) /*数组名加下标*/ printf(“test[%d]=%d\n”,i,test[i]); printf(“\narray & offset notation \n”); „
C语言程序设计(基于CDIO思想)
数组名和指针变量
引用数组元素既可以用下标法也可以用指针法 来实现 数组名代表数组的首地址,由编译系统分配, 是一个常量,不能进行自增或自减运算 指针变量是一个变量,当它指向数组指针后, 数组名和指针变量名可以混用
指针变量可以作为赋值表达式的左值使用,可 以自增自减,可以指向数组中任意元素
C语言程序设计(基于CDIO思想)
2000 2002 2006 3010
3 6.5 50
变量 i 变量 j 变量ip
2000
指针的定义
定义指针变量的语法格式为: 类型说明符 *指针变量名1,*指针变量名2,„; 其中:*表示变量为指针类型;“类型说明符” 表示该指针变量所能指向的变量类型。指针变量可 以在定义的时候就进行初始化。 例如:int a,*p=&a; 注意:任何变量都有三个要素:变量名、变量 的值和变量类型,指针变量的类型是它所指向的变 量的类型,指针变量只能指向同一个类型的变量
C语言程序设计(基于CDIO思想)
指针操作字符串举例
例8_7 字符串拷贝. /*拷贝源串src到目的串dest*/ void strcpy(char *dest,char *src)
{
while((*dest++=*src++)!=’\0’); }
说明:dest和src是两个指向字符串的指针。函数 调用时,分别把目的字符串和源字符串的起始地址 传给dest和src。然后把src指向的字符对应赋值到 dest所指向的空间,接着各自移动一个字符空间, 进行下一个字符的赋值,直到遇到空字符‘\0’。
C语言程序设计(基于CDIO思想)
结果为: ****** ***** **** *** ** *
指针操作字符串举例
例8_6 测试字符串的长度函数. S每向后移一个字符 int strlen(char *s) 就计数一次,直到s { int len=0; 指向串结束符为止. while(*s++) len++; return (len); } 1 2 3 4 5 6 \0 main() { int slen; char *s=“123456”; s s s s s s s slen=strlen(?); printf( ? ); }
C语言程序设计(基于CDIO思想)
指针的算术运算
当指针指向数组后就可以进行以下算术运算: 指针与整数的加减法:指针加上(减去)一个整数, 得到的结果仍是指针,表示指针由当前的位置 向前(向后)移动n个数据位置。 自增/自减运算:指针进行自增/自减运算,结果 仍然为指针,可以使指针向前(++)或向后(-)移动一个数据位置
指针减法运算:指针相减反映出两个指针之间 相隔的数据个数
在使用时要注意*和++(--)运算的优先级
C语言程序设计(基于CDIO思想)
指针的算术运算举例
int a[10],*p=&a[3]; 则 : * p++: 相 当 于 * (p++),即访问a[3]之后p再指向a[4] (*p)++: 是将 a[3] 元素的值增一, p 仍然指向 a[3] *--p : 相当于 * ( --p ),即 p 指向 a[2] 之后再 访问a[2]
p1=p2; /*p1和p2都是指针变量,将p2的值赋给p1*/ 注意:不能把一个整数赋给指针变量。
C语言程序设计(基于CDIO思想)
指针运算举例
例8_2 运行以下程序,体会指针的概念和运算。
void vmain() { char c1='a',c2='b',c3='c'; float f1=90.0,f2=80.5,f3=70.0; char *pc=&c1; float *pf=&f1; printf("&c1=%x,c1=%c;&f1=%x,f1=%4.1f\n",pc,*pc,pf,*pf); pc=&c2;pf=&f2; printf("&c2=%x,c2=%c;&f2=%x,f2=%4.1f\n",pc,*pc,pf,*pf); pc=&c3;pf=&f3; printf("&c3=%x,c3=%c;&f3=%x,f3=%4.1f\n",pc,*pc,pf,*pf);
动态区
(局部变量、 形参变量)
临时占 用空间
空闲空间
C语言程序设计(基于CDIO思想)
变量的访问形式
直接访问:变量名代表着该变量已分到的地址,按变量地址存取 变量值的方式称为直接访问。
间接访问:这种方式好比我们要找到宝藏,必须先找到埋宝藏的 地址,才能根据地址找到宝藏
例如:若变量ip保存 着变量i的地址,通过 ip存取i的值就是间接 访问。要使用间接访 问运算符 *