0725指针

指针的概念

        指针也就是地址,操作系统的寻址空间编号,就是给操作系统每个单元都分配了统一编号。

        对应的指针类型变量,只能存放对应类型的变量地址。

        指针中最重要的就是*和&,*就代表定义的是一个指针,而&则是用来取地址

定义一个指针

int *p;    //定义了整形的指针变量
int a=100; //定义了变量a
p=&a;      //把a的地址付给了p

指针分类

        字符指针,短整型指针,整形指针,长整型指针,float型指针,double型指针,函数指针,结构体指针,指针的指针,数组指针。

指针和变量之间的关系

        利用指针来交换两个变量的地址和值

#include <stdio.h>
void ch(int *a,int *b);
int main(){
//交换两个变量的值
	int *p;
	int a=18 , b=32;			//定义变量a,b 
	int *p_a=&a;				//a地址赋给p_01 
	int *p_b=&b;				//b地址赋给p_02
	printf("a的初始值%d\n",a);	//输出a的数值 
	printf("b的初始值%d\n",b);  //输出的b数值 
	printf("a的地址%d\n",p_a);			//a的地址 
	printf("%b的地址%d\n",p_b);			//b的地址 
	p=p_a;
	p_a=p_b;                    //交换a b地址
	p_b=p;
	printf("交换后a的地址%d\n",p_a);		
	printf("交换后b的地址%d\n",p_b);
	ch(&a,&b);					//调用函数 
	printf("交换后a的值=%d\n",a);			//输出交换后的 a
	printf("交换后b的值=%d\n",b);			//输出交换后的 b

	return 0;
}

void ch(int *a,int *b){
	int c;						
	c=*a;						
	*a=*b;						
	*b=c;						
//	printf("a的值%d\n",*a);		
//	printf("b的值%d\n",*b);		
}

指针与元素之间的关系

#include <Stdio.h>
int main(){
	int a[10]={1,23,5,2,5,7,2,5,3,9};//开辟空间 
	int b[5]={0,1,2,3,6};
	int c[4]={12,23,54,76};
	int *p;
	int i;
//	printf("a[0]的地址%p\n",&a[0]);
//	p=&a[0]; //取0号元素的地址,初始化 
//	printf("指针变量p的值%p\n",p);
	p=a;//用数组名初始化 
//	printf("指针变量p的值%p\n",p);
	for(i=0;i<10;i++){
	printf("指针变量p的值%p\n",p);                //可以用三种方式来确定数组中第一个元素的地址
		printf("指针变量p%d所对应内容%d\n",i+1,*p);
		p++; 
	}
	printf("\n");
	p=b;
	for(i=0;i<5;i++){
		*p+=10;
		printf("指针变量p的值%p\n",p);
		printf("%d\n",*p);
		p++;
	} 
	
	p=c;
	return 0;
}

哦,对了,还有个小知识:

*p(x++)和*px++的区别

*p(x++)是先x++后再取(x+1)的内容;

*px++是先取x的内容再进行x+1

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值