C语言指针(含例子).pptVIP

  • 3
  • 0
  • 约5.72千字
  • 约 70页
  • 2025-10-13 发布于北京
  • 举报

教学实践部计算机中心

胡晓丽;指针在C语言里应用极为广泛,是C语言的灵魂

使程序简洁、紧凑、高效

函数调用时批量参数的传递

内存的动态分配

内存地址的直接处理

复杂数据结构的简洁表达等许多其它数据类型难以实现的复杂操作;掌握指针的概念、指针变量定义格式和引用

掌握指针的运算方法

指针应用举例;指针就是内存中的变量的地址;内存单元的编号:计算机内存中,每一个字节的存储单元都有一个编号(亦称为内存地址)

在VC中,内存单元的编号是一个8位的十六进制数(表示32位二进制数,VC是32位编译系统)

如:0013FF7C;变量:实质是代表了“内存中的某个存储单元”。;变量的地址:表示变量在内存中的位置,其值是该变量在内存中所占存储单元的首字节的编号;;

a在内存中占4个字节,但a的值是4个字节中首个字节的编号

运算符:取地址,如a的值为变量a的地址

变量地址的输出可以用格式字符串“%p”;我们在程序中只需要指出变量名,无需知道每个变量

在内存中的具体地址,每个变量与具体地址的联系是

由C编译系统来完成的。对变量的存取操作就是对某

个存储单元进行操作。这种直接按变量的地址存取变

量值的方式称为“直接存取”。;

;指针:也是一种变量,这种变量是用来存放内存地址的。;指针是字节的编号,即地址。

指针也是要存储的,因此每个指针也需要一个变量来存储它。这个变量称为指针变量。指针变量的值是某一定义好的变量的地址。;a;定义形式如下:

数据类型*指针变量名;

如:int*p1,num;

表示的意思为:

定义了一个指针变量p1,它指向的是一个整型数据。或者说,这时候p1中存储的是一个整型变量的地址。

注意:指针变量定义了之后,需要给它赋一个确定的变量的地址,否则,就会出现严重的系统错误。;#includestdio.h

;例:int**p,*s,k=20;

s=k;

p=s;;例:指针的概念;指针的移动;指针变量只能进行逻辑运算和相减的算术运算。

不是指向同一数组的指针变量运算是无意义的。

指针变量的值加1或减1,并不是地址加1中减1,而是加上或减去???变量在内存中所占的字节数,该字节数由指针的基类型决定。;11;指针的比较;指针可以作为参数在主调函数和被调用函数之间

传递数据,通过指针可以在被调用函数中地调用

中的变量进行引用,这也就使得通过形参改变对

应实参的值有了可能,利用此形式就可以把两个

或两个以上的数据从被调用的函数返回到调用函数。;例将数从大到小输出;;swap(intx,inty)

{inttemp;

temp=x;

x=y;

y=temp;

}

main()

{inta,b;

scanf(%d,%d,a,b);

if(ab)swap(a,b);

printf(\n%d,%d\n,a,b);

};swap(int*p1,int*p2)

{intp;

p=*p1;

*p1=*p2;

*p2=p;

}

main()

{inta,b;

int*pointer_1,*pointer_2;

scanf(%d,%d,a,b);

pointer_1=a;pointer_2=b;

if(ab)swap(pointer_1,pointer_2);

printf(\n%d,%d\n,a,b);

}; 例编写程序,定义一个含有15个元素的数组,并编写函数分别完成以下操作:

(1)调用C库函数中的随机函数给所有元素赋以0-49之间的随机数;

(2)输出数组元素中的值;

(3)按顺序对每隔三个数求一个和数,并传回主函数;

(4)最后输出所有求出的和值。;调用随机函数的方法如下:包含头文件stdlib.h

n=rand()%x;

n将得到一个在0-(x-1)之间的随机数。;分析:

(1)由于要每隔3个数求一个和,15个数要求出5个和,所以主函数中要定义一个数组来存放5个和数。

(2)两次输出元素的值,虽然输出对象不同,但是数组的类型相同,可调用一个函数来完成,只要指定不同的数组名,不同的输出个数即可。

;#includestdio.h

#includestdlib.h

#defineSIZE15

#defineN3

voidgetrand(int*,int);

voidgetave(int*,int*,int);

voidprintarr(int*,int);;voidprintarr(i

文档评论(0)

1亿VIP精品文档

相关文档