指针与结构体知识点

例1

#include <stdio.h>

int main(){
	int * p;	//int * 表示该p变量只能存储int类型变量的地址 	
	printf("%d",p);		
	return 0; 
} 

因为p没有保存任何变量的地址,所以最终会指向一个不确定的垃圾地址 。

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

例2

#include <stdio.h>
int main(){
	int * p;	//p是变量名字,int * 表示该p变量只能存储int类型变量的地址 	
	int i = 10;
	int j;
	p = &i;	//&表示取地址符,p来存储i的地址
	//若把该行去掉,那么p就没有保存任何地址,那么p最终会指向一个不确定的垃圾地址 
	*p = i;	//等价于 i=i。 
	// p = 10;	//error
	j = *p;	//等价于 j=i
	printf("i = %d,   j=%d,   *p = %d\n",i,j,*p);	
	return 0; 
} 

运行结果:
在这里插入图片描述
知识点
当int *p时,p就成了指针变量
p代表地址
*p代表地址内容
1,p保存i的地址,那么p就指向i
2,修改i的值不会影响p的值
修改p的值也不会影响i的值
4,*p就是普通变量i,*p=1
5,p是i的地址,&i也是i的地址,p=&i

结构体

int i;
f(i);	 
f(&i); 

使用结构体,有两种方式,

  1. 通过结构体变量的名字来使用
  2. 通过一个指向了某一个结构体变量的指针来实现

二者得到的内容相同,但是 前者耗内存,耗时间,因为地址,只用了4个字节

第二种更加方便,第一种必须要有其名字
不能定义10个变量,再定义10个名字
结构体变量之间,通常只传递他们的地址,不发送整体变量

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值