C语言-指针-基本

指针的基本概念

指针变量用于保存变量的地址
声明指针时加一个 * ,表名该变量存储的是一个地址

指针变量与普通变量

指针变量与普通变量的区别 :
从语法角度:指针变量多了个标识 星号,以此表示该变量存储的是地址
从内存角度:两者无区别,都是一块内存,并且都有地址
唯一的区别:普通变量存储数据,指针变量存储地址

指针的占用内存

无论指针是什么类型,都是4个字节(32位),8字节(64位),因为他们全部都是保存地址的

指针的赋值

int a=0;
int *p = &a;
*p = 0;
p = a的地址
a = 0;
&a = a的地址
&p = p的地址

*p = 20;
a的值变为20;

指针运算

指针可以和整数进行运算,运算结果是另一个地址
步长决定指针移动到哪个位置
指针类型不同,其步长便不同。如:char 步长为1 int步长为4

在这里插入图片描述
数组中的运算
在这里插入图片描述

野指针

如果指针未初始化或者指向了一个不确定的空间,这种指针就叫做野指针
空间被回收了,指针还指向原来的空间,也是野指针
尽量不要在函数中返回一个局部变量的地址,会造成野指针
在这里插入图片描述

//   野指针(悬挂指针) 
void textX()
{
//	如果指针未初始化或者指向了一个不确定的空间,这种指针就叫做野指针
//空间被回收了,指针还指向原来的空间 
	int *p = 0x888;
	*p =100;	
	printf("%d\n",*p);
 } 

空指针

int * p = NULL

指针类型的转换

	int a=10;
	int *p = &a;
	char *cp =(char *) p;

指针和数组名

数组名就是一个指针,指向首元素的地址,只不过该指针不能修改指向

指针方法遍历数组

int i;
	int arr[] = {1,2,3,4};
	for(i=0;i<4;i++){
		printf("%d\n",*(arr+i));
	} 

函数传参的区别

基础数据类型传参时,是为值传递
数组传参时,是为地址传递
普通情况下,数组可以进行传参修改,变量不行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值