C语言学习笔记-5

本文详细介绍了C语言中的指针,包括指针的字节大小、内存地址的获取以及如何通过指针实现变量间的通信。通过实例展示了指针作为函数参数时如何改变实参的值,并解释了普通参数与指针参数的区别。此外,还探讨了如何将数组赋值给指针,并解释了指针计算中不同数据类型步长的差异。
摘要由CSDN通过智能技术生成

指针:

1. 字节大小

sizeof(数据类型)
sizeof(变量名)
均可以显示变量名或者数据类型在内存空间占据的大小
char,占用1字节空间
short,占用2字节空间
int,占用4字节空间
long,占用4字节空间
float,占用4字节空间
double,占用8字节空间

%p :打印变量占用的内存地址,用16进制表示
printf("%p",&a):打印a占用的内存地址

通过指针变量定义指针,指向变量,实现指针,变量通信
int*  p//int*是一种数据类型,定义一个指针,指针变量名为P,指针本身也是变量,也会存在内存中,指针变量在32位操作系统内存中占据的内存大小为:4字节,位操作系统占8字节
P= &a //P表示为a的指针,即a的内存地址可以通过P得到
*p可以实现指针赋值进而改变a的值


2.指针作为函数参数

void arr(int a,int b)
{
int temp = a;
b = temp;
a=b
}

int main(void)
{
int a = 10;
int b = 20;
arr(a,b);
printf("%d",a);
printf("%d",b);
}
最后打印出来的a=10;b=20: 在arr中a,b 的是确实发生变化,但是arr传入的参数是形参,他不能改变变量的值。
======================指针赋值=================
void arr(int* a,int* b)
{
int temp = *a;
*b = temp;
*a=*b
}

int main(void)
{
int a = 10;
int b = 20;
arr(&a,&b);
printf("%d",a);
printf("%d",b);
}
最后打印出来的a=20;b=10:

3.数组赋值给指针

int main(void){
int arr[]={1,2,3,4,5,6,7,8}
int* p;
p=arr;//将数组赋值给指针
printf("%d",arr[2]);//值为4
printf("%d",*(p+3))//指针+1指向下一个元素,所以需要指向第四个元素需要加3
}

  1. 指针计算不是简单的整数相加
  2. 如果是一个int *,+1的结果是增加一个int的大小
  3. 如果是一个char *,+1的结果是增加一个char大小
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值