C语言复习:指针复习

1.回顾一下什么是指针?

指针就是变量的地址,变量的地址就是内存地址,在内存地址上存储内容。就可以通过指针访问变量的内容。
指针是一种数据类型,就是变量在内存中对应单元的地址。

如:
scanf("%d",&a); //&a就是变量a的地址。

2.指针变量:

1.指针简单例子:
指针的定义 和使用: 前面有*号.
int * 变量名 // 这个变量名就是指针 //地址

// *变量名:就是地址上的内容的值
int *p1; //这个指针是int型, 就可以访问int型的变量,
int a=10;
p1=&a; //指针是地址,把变量a的地址给p1.
就可以通过
:*p1就是a的值 .访问变量a的值。

#include<stdio.h>
int main(){
	
	
	
	int a=10,b=12;
	
	
	int *p1, *p2;
	 
	
//scanf("%d",&a);  //&a就是变量a的地址, 
	
p1=&a;                     //把a的地址赋值给指针p1 
p2=&b;
printf("%d %d\n",a,b);
printf("利用指针输出a,b为:%d %d",*p1,*p2);  //*p1等价于a,*p2等价于*p2 
	
	
	
	
	
	
	return 0;
} 

在这里插入图片描述

3.指针在数组的应用:

在数组中:指针指向数组的首地址。

int a[6]={1,2,3,4,5,6};
int *p1;
p1=&a[0]; //指针指向数组的第一个地址 //这里可以直接:
p1=a //数组名就是这个数组的首地址。

如何让指针访问到数组的其他元素呢?
就要用到指针的运算符,++; //就是指针的移动
p1++; //改变了地址,使地址指向了数组第二个元素(地址移动到数组的第二个位置)

#include<stdio.h>
int main(){
	
	
	
	
	
	
	
	int a[6]={1,2,3,4,5,6};
	
	int *p1;
	p1=&a[0]; //指针指向数组的第一个地址 
	
	
	
	printf("指针指向数组的第一个地址上的内容是:%d\n",*p1);
	
	 
	 p1++;  //指针运算符++,地址变化,每加一,地址就会指向数组下一个元素 
	 
	printf("指针指向数组的第二个地址上的内容是%d\n",*p1);
	
	p1++; 
	 	printf("指针指向数组的第三个地址上的内容是%d\n",*p1);
	
	
	
	
	
	
	return 0;
	
} 

结果:

在这里插入图片描述

3.利用指针依次顺序输出数组的值:

#include<stdio.h>
int main(){
	
	
	
	
	
	
	
	int a[6]={1,2,3,4,5,6};
	
	int *p1;
	p1=a; //指针指向数组的第一个地址 
	
	
	
/*	printf("指针指向数组的第一个地址上的内容是:%d\n",*p1);
	
	 
	 p1++;  //指针运算符++,地址变化,每加一,地址就会指向数组下一个元素 	 
	printf("指针指向数组的第二个地址上的内容是%d\n",*p1);
	
	p1++; 
	 	printf("指针指向数组的第三个地址上的内容是%d\n",*p1);
	
	
	*/
	
	for(int i=0;i<6;i++){
		
		
		printf("%d",*p1);
		p1++;
	}
	
	
	
	
	
	
	return 0;
	
} 

效果:

在这里插入图片描述

4.字符串指针:

char *p1=“hello”; //指针指向:字符数组
在通过:p1输出内容 //p1

这里注意:

printf("%s\n",p1); //这个p1是输出整个字符串 :输出: “hello”
 printf("%c",*p1);         //这个是首个字符。输出“h”.

char *p2;
char we[20]=“hello world you!”;
p2=we;

#include<stdio.h>
int main(){
	
	
	
	
	char *p1="hello";  //指针指向:字符数组 . //区别一下写法 

	
char *p2; 
char we[20]="hello world you!";
p2=we;

	printf("%s\n",p1);      //区别整型  ,整型就是 *p1  ,字符串直接写p1; 
		//printf("%s\n",*p1);  这个是错误的
		
		 printf("%s",p2);
		 
		 
		 
	
	return 0;
}

结果:
在这里插入图片描述

5.指针结构体:

结构体指针变量

一个结构体指针变量就是结构体变量的首地址
通过:结构体指针变量可以访问:结构体的成员。

通过结构体指针指向结构体变量来访问:结构体成员

p1=&stu; //把结构体变量的地址赋值给指针p1;
语法:
&(*p1).结构体成员// 来输入值赋值给结构体成员

scanf("%d",&(*p1).num);

p1->结构体成员 (输出结构体成员值)
printf("%d",p1->num);

#include<stdio.h>
int main(){
	
	
	struct Student{
		
		
		int num;
		char name;
		
		
		
	}stu,*p1;
	
	
p1=&stu;

	
//	scanf("%d",&stu.num);// 可以写成 
		scanf("%d",&(*p1).num);


	printf("%d",p1->num);
	
	
	
	
	
	
	
	return 0;
	
}

效果:
在这里插入图片描述
结构体成员指针之后补充!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半浮名

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值