指针学习二——指针、地址

//通过地址的调用来改变变量的值

#include<stdio.h>

void f(int *p);
void g(int k);

int main()
{
	int i = 6;
	printf("&i=%p\n", &i);
	f(&i);
	g(i);

	getchar();
	return 0;
}

void f(int *p)
{

	printf(" p=%p\n ", p);	//p是一个地址 
	printf("*p=%d\n", *p);	//*p作为一个整体是一个整数
	*p = 26;	//此时,通过调用地址*p,改变了i的值。 


}

void g(int k)
{
	printf("k=%d\n", k);
}

&i=0063FE9C
 p=0063FE9C
 *p=6
k=26

区分内存单元的内容和内存单元的地址

C语言使用指针对变量的地址进行操作

定义一个变量P,它位于2000单元,该单元存放了变量x的地址1000。此时,取出变量P的值1000.就可以访问内存1000单元,实现对变量x的操作,也就是通过变量P,可以间接访问变量x。

如果一个指针变量的值是另一个变量的地址,就称该指针指向那个变量。

指针变量的定义

类型名  *指针变量名;

例如:           int *p;           //p是指针变量,*p是整形变量。

指针的类型指的是指向变量的数据类型,指针变量要先赋值再使用。

指针的基本运算

1.取地址运算和间接访问运算

int *p,a=3;

p=&a;

将整形变量的地址赋给整形指针p,使指针p指向变量a。

*除了被用于定义指针以外,还被用于访问指针所指向的变量。

p指向a时,*p和a访问的时一个存储单元,* p的值就是a的值。

//取地址运算和间接访问运算示例

#include<stdio.h>
int main()
{
	int a=3,*p;
	
	p=&a;	//a的地址赋给了p 
	
	printf("a=%d,*p=%d\n",a,*p);//*用来访问指针指向的变量 
	
	*p=10;		//访问变量地址,给变量赋值为10,改变了该地址所存储的变量 
	printf("a=%d,*p=%d\n",a,*p);
	printf("enter a: ");	//同理 
	scanf("%d",&a);
	printf("a=%d,*p=%d\n",a,*p);
	(*p)++;				//将指针p所指向的变量值加一 
	printf("a=%d,*p=%d\n",a,*p);
	
	return 0;
 } 


a=3,*p=3
a=10,*p=10
enter a: 5
a=5,*p=5
a=6,*p=6

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值