栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言指针

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言指针

访问内存中的数据有两种方式:直接访问和间接访问。

直接访问通过变量来实现,变量是内存中某一块存储区域的名称。

间接访问是通过指针来实现的,指针存储的不是数据,而是数据在内存中的地址,访问指针可以达到访问内存中数据的目的。

指针就是内存地址,使用指针来访问变量,就是直接对内存中的数据进行的操作。

内存地址

计算机程序中的所有数据,都必须存储在计算机的存储单元里面,而且可以从计算机的存储单元中取出来。每个存储单元都有唯一的地址,像家里的门牌号、学生的学号一样。

存储的是整型数据的话,会占据四个存储单元,从a到a+3;运用取地址符&输出的对象的地址是它在内存中的首地址也就是a。

计算机内存被划分成按照顺序编号的内存单元,编号就是地址。在程序里定义了一个变量后,在对程序进行编译时,系统会给这个变量分配内存单元。

内存和指针

变量的内存地址就是变量的指针。一个变量,里面存储的是另一个变量的地址,那么这个变量称为指针变量。

指针变量的定义形式:

指向数据类型 *指针变量名

int i;//定义整型变量i

int *p1;//定义指向整型变量的指针变量p1

char j;//定义字符型变量j

char *p2;//定义指向字符型变量的指针变量p2

p1=&i;//给p1赋值i的地址

p2=&j;//给p2赋值j的地址

定义指针变量的时候注意:

int *a,指针变量名是a不是*a,*a是个表达式

定义指针变量的时候要明确它指向的数据类型

指针变量里面只可以存放地址(指针),不可以将非零数(或其他非地址类型的数据)赋值给指针变量。

指针变量的值为0时,称这个指针为空指针,定义指针变量后不给他初始的值时,会默认赋值为0.

指针变量

*叫作指针运算符 表示获取指针变量指向的变量的值。

函数实现两个从大到小输出
#include

//void swap(int *m1,int *m2)//指针变量m1 m2 分别指向a b
//{
// int temp;
// temp=*m1;
// *m1=*m2;
// *m2=temp;
//
// printf("swap函数中的输出n");
// printf("*m1=%d,*m2=%d",*m1,*m2);
//
//}
//void swap(int *m1,int *m2)//指针变量m1 m2 分别指向a b
//{
// int *temp;
// temp=m1;
// m1=m2;
// m2=temp;
//
// printf("swap函数中的输出n");
// printf("*m1=%d,*m2=%dn",*m1,*m2);
//
//}
void swap(int *m1,int *m2)//指针变量m1 m2 分别指向a b
{
 int *temp;
 temp=*m1;
 *m1=*m2;
 *m2=temp;

 printf("swap函数中的输出n");
 printf("*m1=%d,*m2=%dn",*m1,*m2);

}
int main()
{
	int a,b;
	int *p1=&a,*p2=&b;//指针初始化 p1指向a  p2指向b
	printf("输入两个变量n");
	scanf("%d%d",&a,&b);
	if(a 

图90

图91

 

 

指针的运算

指针的运算包括 对指针赋值,移动指针、指针相减、指针和指针或指针与地址之间进行比较等。

指针的运算就是地址的运算。

int a;int *p=&a;那么p+1就是向地址增加的方向移动了4个字节。

*(p-1)和*p-1是不同的,头一个是p指向的地址减去一个存储单元后的数据,后一个是指p所指向的存储单元的值减去1.

指针与函数

指针变量是可以指向一个函数的,函数在程序编译的时候被分配了一个入口地址;这个函数的入口地址叫做函数的指针。

函数指针变量的用途:把指针作为参数传递到其他的函数。实现函数地址的传递,这样就可以在被调用的函数中使用实参函数。

指向函数的整型指针int (*p)(int,int);

p=max;

int max(int x,int y)

返回指针的函数

类型名 *函数名(参数列表);

Void指针类型

void指针类型,可以用来指向一个抽象类型的数据,将他的值赋给另一个指针变量时要进行强制类型转换。

void *p2;

char *p1;

p1=(char *)p2;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/396377.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号