C语言课件第08讲_第1页
C语言课件第08讲_第2页
C语言课件第08讲_第3页
C语言课件第08讲_第4页
C语言课件第08讲_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2021-9-291 program design in c languagepage第八讲第八讲第八章第八章 指针指针 指针和指针变量的概念指针和指针变量的概念变量的指针和指向变量的指针变量变量的指针和指向变量的指针变量2021-9-292 program design in c languagepage8.1.1 地址和指针 存储单元:存放一个字节数据的存储器。存储单元:存放一个字节数据的存储器。存储单元的内容:存储单元中存放的数据。存储单元的内容:存储单元中存放的数据。存储单元的地址:存储单元的编号。存储单元的地址:存储单元的编号。变量的首地址:变量占据的连续存储单元的起始地变量的首地址

2、:变量占据的连续存储单元的起始地址,简称变量的地址。址,简称变量的地址。指针:存储单元的地址,是一个常量。指针:存储单元的地址,是一个常量。2021-9-293 program design in c languagepage8.1.1 地址和指针 int i;char ch;float f;.用户数据区内存用户数据区内存1000100210031001100410051006i占据占据2字节字节ch占据占据1字节字节f占据占据4字节字节存储单元的地址(指针)存储单元的地址(指针)变量(首)地址变量(首)地址i = 1;ch = a;f = 2.5;12.5a存储单元的内容存储单元的内容202

3、1-9-294 program design in c languagepage8.1.2 指针变量 指针变量是专门用来存放内存单元地址的特殊变量。指针变量是专门用来存放内存单元地址的特殊变量。当把某个变量当把某个变量i的地址存入指针变量的地址存入指针变量p后,我们就说这后,我们就说这个指针变量个指针变量p指向该变量指向该变量i。指针变量指针变量p10整型变量整型变量i1000指向指向1000i的地址存入的地址存入pint i = 10, *p;p = &i;指针与指针变量的区别,就是变量值与变量的区别,指针与指针变量的区别,就是变量值与变量的区别,即即指针变量的值是指针指针变量的值是指针。例

4、如,可以说变量。例如,可以说变量i的指针是的指针是1000,但不能说变量,但不能说变量i的指针变量是的指针变量是1000。2021-9-295 program design in c languagepage8.1.2 指针变量 对内存单元的访问有两种方式:对内存单元的访问有两种方式:直接访问:直接根据变量名存取变量的值。直接访问:直接根据变量名存取变量的值。间接访问:将变量的地址存放在指针变量中,当要间接访问:将变量的地址存放在指针变量中,当要对变量进行存取时,首先读取指针变量的值,得到要对变量进行存取时,首先读取指针变量的值,得到要存取变量的地址,再对该变量进行访问。存取变量的地址,再对该

5、变量进行访问。变量变量i10001020.1000.10.指针变量指针变量p (直接访问)(直接访问)(间接访问)(间接访问)2021-9-296 program design in c languagepage8.2.1 指针变量的定义 定义格式:定义格式:类型说明符类型说明符 *指针变量名指针变量名;其中类型说明符指的是指针变量所指向变量的数据类其中类型说明符指的是指针变量所指向变量的数据类型,型, “*”表示随后的变量是指针变量。表示随后的变量是指针变量。例如:例如:int *ptr1; char *ptr2; ptr1是指向整型变量的指针变量,专门用来存放整型是指向整型变量的指针变量,

6、专门用来存放整型变量的地址。变量的地址。ptr2是指向字符型变量的指针变量,专门用来存放字是指向字符型变量的指针变量,专门用来存放字符型变量的地址。符型变量的地址。2021-9-297 program design in c languagepage8.2.1 指针变量的定义 说明:说明: 1)指针变量中只能存放地址(指针),不能和整)指针变量中只能存放地址(指针),不能和整型型 变量混淆。例如下面写法是错误的:变量混淆。例如下面写法是错误的: int *ptr1; ptr1 = 1000;指针变量可以取值为指针变量可以取值为0(null),表示该指针变量),表示该指针变量不指向任何变量。不指

7、向任何变量。 2)指针变量只能存放与它数据类型相同的变量的)指针变量只能存放与它数据类型相同的变量的地址。例如下面写法是错误的:地址。例如下面写法是错误的: int *ptr1; char ch; ptr1 = &ch;2021-9-298 program design in c languagepage8.2.2 指针变量的引用指针变量可以通过一对互逆的运算符进行引用。指针变量可以通过一对互逆的运算符进行引用。取地址运算符取地址运算符“&”作用:返回操作对象的内存单元地址。作用:返回操作对象的内存单元地址。说明:不能对常量或表达式进行说明:不能对常量或表达式进行“&”运算。运算。例如:例如:

8、 int i, *ptr1; char ch, *ptr2; ptr1 = &i; /*将变量将变量i的地址赋给指针变量的地址赋给指针变量ptr1*/ ptr2 = &ch; /*将变量将变量ch的地址赋给指针变量的地址赋给指针变量ptr2*/2021-9-299 program design in c languagepage8.2.2 指针变量的引用指针运算符指针运算符“*”作用:间接存取指针变量所指向变量的值。作用:间接存取指针变量所指向变量的值。 例如:例如:int i, *ptr1; char ch, *ptr2; ptr1 = &i; ptr2 = &ch; *ptr1 = 100

9、; *ptr2 += 32; 其中:其中:*ptr1 = 100; 等价于等价于 i = 100; *ptr2 += 32; 等价于等价于 ch = ch+32; 2021-9-2910 program design in c languagepage8.2.2 指针变量的引用说明:说明:1)定义语句中的)定义语句中的“*”和执行语句中的和执行语句中的“*”含义不同,定义含义不同,定义语句中的语句中的“*”说明定义的是一个指针变量,而执行语句中的说明定义的是一个指针变量,而执行语句中的“*”表示间接存取指针变量所指向变量的值。表示间接存取指针变量所指向变量的值。2)指针变量中必须存放了确定的地

10、址值后才能进行指针运)指针变量中必须存放了确定的地址值后才能进行指针运算。例如下面写法是错误的算。例如下面写法是错误的: int *ptr1; *ptr1 = 10;ptr1中存放的是一个随机的地址值,该地址有可能是系统程中存放的是一个随机的地址值,该地址有可能是系统程序已占用存储单元的地址,将序已占用存储单元的地址,将10赋值给赋值给ptr1所指向对象后,所指向对象后,原来的数据被更新,系统有可能遭到很严重的破坏。原来的数据被更新,系统有可能遭到很严重的破坏。2021-9-2911 program design in c languagepage8.2.2 指针变量的引用例例 指针运算符的使

11、用指针运算符的使用#include void main( ) int a=50, *p; p=&a; printf(*p=%d, p=%xn, *p, p); *p=100; printf(a=%d, &a=%xn, a, &a);程序运行结果:程序运行结果:*p=50, p=fff4a=100, &a=fff42021-9-2912 program design in c languagepage8.2.3 指针变量的初始化一般格式:一般格式:类型说明符类型说明符 *指针变量名指针变量名 = 初始地址值初始地址值; 例如:例如:int i, *ptr1 = &i; float *ptr2 =

12、 0, *ptr3 = null;说明:说明:1)任何指针变量在使用之前必须初始化,使指针)任何指针变量在使用之前必须初始化,使指针变量指向一个确定的内存单元,未经初始化的指变量指向一个确定的内存单元,未经初始化的指针变量禁止使用。针变量禁止使用。2)必须使用同类型变量的地址进行指针变量的初)必须使用同类型变量的地址进行指针变量的初始化。始化。2021-9-2913 program design in c languagepage8.2.4 指针变量的运算实质:地址的运算实质:地址的运算类型:类型:指针变量赋值指针变量赋值指针变量加指针变量加/减一个整数减一个整数两个指针变量比较两个指针变量比

13、较两个指针变量相减两个指针变量相减2021-9-2914 program design in c languagepage8.2.4 指针变量的运算1. 指针变量赋值:将已存在对象的地址赋给指针变量指针变量赋值:将已存在对象的地址赋给指针变量例例 交换两个指针变量所指向变量的值交换两个指针变量所指向变量的值#include void main( ) int *p1, *p2, x1=10, x2=20, t; p1=&x1; p2=&x2; /*指针变量赋值指针变量赋值*/ printf(*p1=%d, *p2=%dn, *p1, *p2); t=*p1; *p1=*p2; *p2=t; /*

14、 交换指针变量所指向变量的值交换指针变量所指向变量的值*/ printf(*p1=%d, *p2=%dn, *p1, *p2); printf(x1=%d, x2=%dn, x1, x2);程序运行结果:程序运行结果:*p1=10, *p2=20*p1=20, *p2=10 x1=20, x2=102021-9-2915 program design in c languagepage8.2.4 指针变量的运算程序运行结果:程序运行结果:*p1=10, *p2=20*p1=20, *p2=10 x1=10, x2=20例例 交换两个指针变量的值交换两个指针变量的值#include void m

15、ain( ) int *p1, *p2, *t=null, x1=10, x2=20; p1=&x1; p2=&x2; /*指针变量赋值指针变量赋值*/ printf(*p1=%d, *p2=%dn, *p1, *p2); t=p1; p1=p2; p2=t; /* 交换指针变量的值交换指针变量的值*/ printf(*p1=%d, *p2=%dn, *p1, *p2); printf(x1=%d, x2=%dn, x1, x2);2021-9-2916 program design in c languagepage8.2.4 指针变量的运算2. 指针变量加指针变量加/减一个整数:指向另一个

16、存储单元减一个整数:指向另一个存储单元例例 移动指针变量访问数组元素移动指针变量访问数组元素#include void main( ) int a10=1, 3, 5, 7, 9, 11, 13, 15, 17, 19; int n=6, *p1, *p2; p1=p2=&a0; printf(1) *p1=%d, *p2=%dn, *p1, *p2); p1=p1+n; p2+; /*指针变量加指针变量加/减一个整数减一个整数*/ printf(2) *p1=%d, *p2=%dn, *p1, *p2); +p1; p1=p1-3; p2=p2+7; printf(3) *p1=%d, *p

17、2=%dn, *p1, *p2); 程序运行结果:程序运行结果:1) *p1=1, *p2=12) *p1=13, *p2=33) *p1=9, *p2=172021-9-2917 program design in c languagepage8.2.4 指针变量的运算3. 两个指针变量比较:对两个指针变量中存放的地址进行比较两个指针变量比较:对两个指针变量中存放的地址进行比较例例 比较指针变量逆序数组元素比较指针变量逆序数组元素#include void main( ) int a10=1, 3, 5, 7, 9, 11, 13, 15, 17, 19; int *p1=&a0, *p2=

18、&a9, t; while(p1p2) /*两个指针变量比较两个指针变量比较*/ t=*p1; *p1=*p2; *p2=t; p1+; p2-; for(t=0; t10; t+) printf(a%d=%dn, t, at); 程序运行结果:程序运行结果:a0=19a1=17a2=15a9=1指针变量的比较运算经常用于数组,判定两个指针变量所指指针变量的比较运算经常用于数组,判定两个指针变量所指向的数组元素的位置先后。向的数组元素的位置先后。2021-9-2918 program design in c languagepage8.2.4 指针变量的运算4. 两个指针变量相减:当两个指针变

19、量指向同一数组中的不同两个指针变量相减:当两个指针变量指向同一数组中的不同数组元素时,指针变量相减的差值即为两个指针变量相隔的元数组元素时,指针变量相减的差值即为两个指针变量相隔的元素个数。素个数。例例 相减指针变量逆序数组元素相减指针变量逆序数组元素#include void main( ) int a10=1, 3, 5, 7, 9, 11, 13, 15, 17, 19; int *p1=&a0, *p2=&a9, t; while(p2-p10) /*两个指针变量相减两个指针变量相减*/ t=*p1; *p1=*p2; *p2=t; p1+; p2-; for(t=0; t10; t+

20、) printf(a%d=%dn, t, at); 程序运行结果:程序运行结果:a0=19a1=17a2=15a9=12021-9-2919 program design in c languagepage8.2.5 指针变量作为函数参数特点:特点: 将变量地址作为实参传送到被调用函数中;将变量地址作为实参传送到被调用函数中; 遵循遵循“单向值传递单向值传递”方式(特殊的地址值);方式(特殊的地址值); 被调用函数不能改变实参指针的值,但可以被调用函数不能改变实参指针的值,但可以改变实参指针所指向变量的值;改变实参指针所指向变量的值; 可以得到多个返回值。可以得到多个返回值。2021-9-29

21、20 program design in c languagepage8.2.5 指针变量作为函数参数例例 交换实参指针所指向变量的值交换实参指针所指向变量的值#include void swap(int *x, int *y) /*形参为相同类型的指针变量形参为相同类型的指针变量*/ int t; t=*x; *x=*y; *y=t; /*交换指针变量所指向变量的值交换指针变量所指向变量的值*/void main() int a=10, b=20; printf(1) a=%d, b=%dn, a, b); swap( &a , &b ); /*实参为变量的地址(指针)实参为变量的地址(指针

22、)*/ printf(2) a=%d, b=%dn, a, b);程序运行结果:程序运行结果:1) a=10, b=202) a=20, b=10地址值传递地址值传递2021-9-2921 program design in c languagepage8.2.5 指针变量作为函数参数例例 交换形参指针变量的值交换形参指针变量的值#include void swap(int *x, int *y) /*形参为相同类型的指针变量形参为相同类型的指针变量*/ int *t; t=x; x=y; y=t; /*交换指针变量的值交换指针变量的值*/void main( ) int a=10, b=20

23、, *p=&a, *q=&b; printf(1) a=%d, b=%dn, *p, *q); swap( p , q ); /*实参为指针变量实参为指针变量*/ printf(2) a=%d, b=%dn, *p, *q);程序运行结果:程序运行结果:1) a=10, b=202) a=10, b=20地址值传递地址值传递2021-9-2922 program design in c languagepage第八章第八章 指针指针 数组的指针和指向数组的指针变量数组的指针和指向数组的指针变量字符串的指针和指向字符串的指针变量字符串的指针和指向字符串的指针变量2021-9-2923 progr

24、am design in c languagepage8.3.1 一维数组的指针和指向一维数组元素的指针变量 数组的指针:数组的首地址。数组的指针:数组的首地址。一维数组的指针:一维数组的首地址,也就一维数组的指针:一维数组的首地址,也就是一维数组中第一个元素的地址。是一维数组中第一个元素的地址。c语言规定:数组名代表数组的首地址。语言规定:数组名代表数组的首地址。 若有:若有:int a10; 则:则:a 与与 a0 是等价的是等价的 数组元素的指针:数组元素的地址。数组元素的指针:数组元素的地址。 指向一维数组元素的指针变量:存放一维数组指向一维数组元素的指针变量:存放一维数组首地址或数组

25、元素地址的变量。首地址或数组元素地址的变量。2021-9-2924 program design in c languagepage8.3.1 一维数组的指针和指向一维数组元素的指针变量 一维数组的首地址加上偏移量一维数组的首地址加上偏移量x即可得到其他数即可得到其他数组元素的地址。组元素的地址。 例如:例如: int a10, *p; p=a; /* 等价于等价于 p=&a0 */ 则有:则有: &a1 等价于等价于 a+1 或或 p+1 &ai 等价于等价于 a+i 或或 p+i 注意:注意:p+i指向数组的第指向数组的第i个元素,而不是简单地个元素,而不是简单地使指针变量使指针变量p的值

26、加的值加i。其所代表的地址实际上是。其所代表的地址实际上是p+isize(size为一个数组元素所占的字节数)。为一个数组元素所占的字节数)。2021-9-2925 program design in c languagepage8.3.1 一维数组的指针和指向一维数组元素的指针变量 访问一个数组元素主要有两种形式:访问一个数组元素主要有两种形式:下标法:用下标法:用 ai 的形式存取数组元素。的形式存取数组元素。指针法:用指针法:用 *(a+i) 或或 *(p+i) 的形式存取数组的形式存取数组元素。元素。 其中其中a是一维数组名,是一维数组名,p是指向数组元素的指是指向数组元素的指针变量。

27、针变量。p的初值为数组的初值为数组a的首地址,可以通的首地址,可以通过指针变量赋值或加过指针变量赋值或加/减一个整数使减一个整数使p指向不指向不同的数组元素。同的数组元素。 例如:例如:int a10, *p=a; p+; /* p指向指向a1 */ p=a+5; /* p指向指向a5 */2021-9-2926 program design in c languagepage8.3.1 一维数组的指针和指向一维数组元素的指针变量 例例 通过下标法存取数组元素通过下标法存取数组元素#include void main( ) int a10, i; for(i=0; i10; i+) scanf

28、(%d, &ai); for(i=0; i10; i+) printf(%5d, ai); printf(n);2021-9-2927 program design in c languagepage8.3.1 一维数组的指针和指向一维数组元素的指针变量 例例 通过数组名计算元素地址存取数组元素通过数组名计算元素地址存取数组元素#include void main( ) int a10, i; for(i=0; i10; i+) scanf(%d, a+i); for(i=0; i10; i+) printf(%5d, *(a+i); printf(n);2021-9-2928 program

29、 design in c languagepage8.3.1 一维数组的指针和指向一维数组元素的指针变量 例例 通过指针变量存取数组元素通过指针变量存取数组元素#include void main( ) int a10, *p; for(p=a; pa+10; p+) scanf(%d, p); for(p=a; pa+10; p+) printf(%5d, *p); printf(n);2021-9-2929 program design in c languagepage8.3.1 一维数组的指针和指向一维数组元素的指针变量 用指针法访问数组元素的注意事项:用指针法访问数组元素的注意事项:

30、数组名是一个常量,不允许重新赋值。数组名是一个常量,不允许重新赋值。p+i和和a+i均表示数组元素均表示数组元素ai的地址,均指向的地址,均指向ai。 *(p+i)和和*(a+i)均表示均表示p+i和和a+i所指对象的内所指对象的内容,即容,即ai。 *p+ 等价于等价于 *(p+),其作用是先得到,其作用是先得到*p,再使再使p=p+1。2021-9-2930 program design in c languagepage8.3.1 一维数组的指针和指向一维数组元素的指针变量 用指针法访问数组元素的注意事项:用指针法访问数组元素的注意事项:(*p)+:表示将:表示将p所指向元素的值加所指向

31、元素的值加1。 例如:例如: int a5=0, 2, 4, 6, 8, *p; p=a+2; (*p)+; printf(%dn, *p); 程序段输出结果为:程序段输出结果为:52021-9-2931 program design in c languagepage8.3.1 一维数组的指针和指向一维数组元素的指针变量 例例 分析下面程序的输出结果分析下面程序的输出结果#include void main( ) int a5=0, 2, 4, 6, 8, *p, i; p=a; (*p)+; p=a+1; +(*p); p=a+2; (*p)-; p=a+3; -(*p); for(i=0

32、; i=4; i+) printf(%5d, ai); printf(n);程序运行结果程序运行结果: 1 3 3 5 82021-9-2932 program design in c languagepage8.3.1 一维数组的指针和指向一维数组元素的指针变量 用指针法访问数组元素的注意事项:用指针法访问数组元素的注意事项: 实际上是变址运算符,即编译时是将数组实际上是变址运算符,即编译时是将数组元素元素ai处理成处理成*(a+i)的。因此指向数组元素的。因此指向数组元素的指针变量也可带下标。的指针变量也可带下标。 例如:例如:*(p+i) 可以表示成可以表示成 pi。 注意:如果注意:如

33、果p不指向不指向a0,则,则pi和和ai是不一是不一样的。样的。 例如:例如:int a10, *p; p=a+3; /* p指向指向a3 */ p3=25; /* p3等价于等价于a6 */ 这种方式容易出错,一般不提倡使用。这种方式容易出错,一般不提倡使用。2021-9-2933 program design in c languagepage8.3.1 一维数组的指针和指向一维数组元素的指针变量 数组元素的访问小结数组元素的访问小结int i, a10, *p=a;表表 现现 形形 式式含含 义义&a0 a p一维数组首地址一维数组首地址&ai a+i p+i一维数组下标为一维数组下标为

34、 i 的元素地址的元素地址a0 *a *p一维数组下标为一维数组下标为 0 的元素的的元素的值值ai *(a+i) pi *(p+i) 一维数组下标为一维数组下标为 i 的元素的值的元素的值2021-9-2934 program design in c languagepage8.3.3 数组名作为函数参数 一维数组名作为函数参数的特点:一维数组名作为函数参数的特点: 作为实参的数组名表示数组的首地址,是一个作为实参的数组名表示数组的首地址,是一个地址常量;地址常量; 作为形参的数组名并不表示数组的首地址,它作为形参的数组名并不表示数组的首地址,它不是一个地址常量而是一个指针变量;不是一个地址

35、常量而是一个指针变量; 在函数调用时,实参向形参传递数组的首地址;在函数调用时,实参向形参传递数组的首地址; 可以用指向数组元素的指针变量作为函数参数。可以用指向数组元素的指针变量作为函数参数。2021-9-2935 program design in c languagepage例例 用选择法对用选择法对10个整数由大到小排序个整数由大到小排序#include void sort(int , int);void main( ) int *p, i, a10; printf(input data:n); for(i=0; i10; i+) scanf(%d, a+i); sort(a, 10)

36、; for(p=a; pa+10; p+) printf(%5d, *p); printf(n);void sort(int x , int n) int *x_end, *y, temp; x_end = x+n;for( ; xx_end-1; x+) for(y=x+1; y*x) temp=*x; *x=*y; *y=temp; 8.3.3 数组名作为函数参数 2021-9-2936 program design in c languagepage8.4.1 字符串指针变量的定义与引用 字符串常量的处理是用字符数组来实现的。也字符串常量的处理是用字符数组来实现的。也就是说,无论是否定义

37、了字符数组,对于程序就是说,无论是否定义了字符数组,对于程序中出现的字符串,系统都会在内存中开辟一个中出现的字符串,系统都会在内存中开辟一个字符数组连续存储空间来存放该字符串常量。字符数组连续存储空间来存放该字符串常量。 字符串的指针:字符串的首字符地址,也就是字符串的指针:字符串的首字符地址,也就是存放字符串的字符数组的首地址。存放字符串的字符数组的首地址。 字符串指针变量:通常把字符串指针变量:通常把char型指针变量称为型指针变量称为字符串指针变量。也就是说,指向字符串的指字符串指针变量。也就是说,指向字符串的指针变量等同于指向字符数组元素的指针变量,针变量等同于指向字符数组元素的指针变

38、量,可以指向字符串中的任意一个字符。可以指向字符串中的任意一个字符。2021-9-2937 program design in c languagepage8.4.1 字符串指针变量的定义与引用 字符串指针变量的定义和初始化字符串指针变量的定义和初始化方式一:将存放字符串的字符数组名赋给字符方式一:将存放字符串的字符数组名赋给字符串指针变量,让字符串指针变量指向字符串的串指针变量,让字符串指针变量指向字符串的首字符,然后通过移动指针变量来访问字符串首字符,然后通过移动指针变量来访问字符串的其他字符。的其他字符。 例如:例如: char str = welcome to china!; char

39、 *p; p = str; /* 等价于等价于 p = &str0 */2021-9-2938 program design in c languagepage8.4.1 字符串指针变量的定义与引用 字符串指针变量的定义和初始化字符串指针变量的定义和初始化方式二:在程序中定义一个字符串指针变量,方式二:在程序中定义一个字符串指针变量,并将字符串的首地址直接赋给它,然后通过移并将字符串的首地址直接赋给它,然后通过移动指针变量来访问字符串的其他字符。动指针变量来访问字符串的其他字符。 例如:例如: char *p = welcome to china!; 等价于:等价于: char *p; p =

40、 welcome to china!; 这里的字符串指针变量这里的字符串指针变量p指向字符串的首字符,指向字符串的首字符,即第一个字符即第一个字符w。2021-9-2939 program design in c languagepage例例 用字符串指针变量实现字符串操作用字符串指针变量实现字符串操作#include void main( ) char *str = welcome to china!; printf(%sn, str); /*整体引用字符串整体引用字符串*/ for ( ; *str!=0; str+ ) printf(%c, *str); /*逐个引用字符串中的字符逐个引

41、用字符串中的字符*/ printf(n);8.4.1 字符串指针变量的定义与引用 程序运行结果程序运行结果:welcome to china!welcome to china!2021-9-2940 program design in c languagepage8.4.2 字符串指针变量与字符数组 字符数组是由若干个元素组成,每个元素存放一字符数组是由若干个元素组成,每个元素存放一个字符;而字符串指针变量存放的是字符串中某个字符;而字符串指针变量存放的是字符串中某一个字符的地址。一个字符的地址。赋值方式不同。字符数组只能对各个元素分别赋赋值方式不同。字符数组只能对各个元素分别赋值,而字符串指

42、针变量只用赋给字符串的首地址值,而字符串指针变量只用赋给字符串的首地址就可以了。就可以了。 例如,下面的赋值是正确的:例如,下面的赋值是正确的: char *str; str = welcome to china!; /*str是指针变量是指针变量*/ 下面的赋值是错误的:下面的赋值是错误的: char str30; str = welcome to china!; /*str是数组名是数组名*/2021-9-2941 program design in c languagepage8.4.2 字符串指针变量与字符数组 字符串指针变量占用的内存要少于字符数组。字符串指针变量占用的内存要少于字符数组。 例如,编译系统为下面二维字符数组的定义及初始例如,编译系统为下面二维字符数组的定义及初始化分配了化分配了36个字节的内存空间:个字节的内存空间: char st

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论