指针

指针

·指针(pointer)简介

指针是一个值为内存地址的变量(或数据对象)。


Prt_year存放的为year的地址。

·基本用法

数据类型 *指针变量名;

例如:

int *ptr_num;

char *ptr_name;

float *ptr_money;

Double *ptr_price;

注意:在头文件<stdio.h>中,NULL被定义为常量,int *ptr_num=NULL;指针的初值为空,表示指针不指向任何地址。

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int num=2018;
	int *ptr_num = #
	printf("num变量的地址是:%p\t%x\n",ptr_num,&num);
	//%p指针占位符,%x 16进制占位符
	return 0; 
}

运行结果为:


·间接运算符

 

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int num=2018;
	int *ptr_num = #
	*ptr_num=2222;//使用指针修改变量值
	printf("*ptr_num对应的值为:%d",num); 
	return 0; 
}

运行结果为:

 

将几种不同的操作演示一下,便于理解。

 

#include<stdio.h>
int main()
{
	int num1, num2;//定义两个变量 
	int *ptr_num1, *ptr_num2;//定义两个指针变量
	
	ptr_num1=&num1;//让ptr_num1指向num1的地址 
	ptr_num2=&num2;//让ptr_num2指向num2的地址 
	
	num1=1024; num2=2048;//给num1和num2赋值 
	
	//打印两个num的值和地址 
	printf("num1的值是:%d\tnum1的地址是:%p\n",num1,ptr_num1); 
	printf("num2的值是:%d\tnum2的地址是:%p\n",num2,ptr_num2);
	
	//将变量num1的值赋个num2
	num2 = num1; //也可以写成*ptr_num2 = *ptr_num1; 
	printf("\n\nnum1的值是:%d\tnum1的地址是:%p\n",num1,ptr_num1); 
	printf("num2的值是:%d\tnum2的地址是:%p\n",num2,ptr_num2);
	
	num1=1024; num2=2048;//将num1和num2的值还原
	
	//直接操作指针
	ptr_num2 = ptr_num1;
	printf("\n\nnum1的值是:%d\tnum1的地址是:%p\n",num1,ptr_num1); 
	printf("num2的值是:%d\tnum2的地址是:%p\n",num2,ptr_num2);
	//结果num2的值没有变,但是ptr_num2指向的地址变了
	
	*ptr_num2=9999;//给ptr_num2所指向的地址赋值
	printf("\n\nnum1的值是:%d\tnum1的地址是:%p\n",num1,ptr_num1); 
	printf("num2的值是:%d\tnum2的地址是:%p\n",num2,ptr_num2);
	//这个时候改变的为num1的值 
		
	return 0; 
 }  

所对应的运行结果为:

 

小结:

1. 指针就是一个变量,用来存放另一个变量的地址。

2. 如果一个变量存储另一个对象的地址,则称该变量指向这个对象。

3. 指针变量可以赋值,指针的指向在程序的执行中可以改变。

注意:

1. 指针变量的命名规则和其他变量的命名规则一样。

2. 指针不能与现有变量同名。

3. 指针可存放C语言的任何基本数据类型、数组和其他所有高级数据结构的地址。

4. 若指针已声明为指向某种类型数据结构的地址、则它不能用于存储其他类型数据的地址。

5. 应为指针指定一个地址后,才能在语句中使用指针。

 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值