C语言指针详解2

一、指针补充

1.指针类型的意义
指针类型决定了指针在被解引用的时候访问几个字节, int指针,解引用访问4个字节, char指针,解引用访问1个字节
指针类型决定了指针的步长(指针走一步可以走多远)

int arr[10]={0};
int* p=arr;
*(p+1)=1;            //int* 在加一的时候会移动四个字节
char* q = arr;
*(q+1)=1;            //char* 在加一的时候,每次只能移动一个字节
*称之为 解引用操作符*
*p就是对p进行解引用操作,找到它所指向的对象a
int* p,p是指针,*p是对指针p的解引用
*LinkList,LinkList是指针,*LinkList是自己定义的数据类型

2.函数声明
void* malloc(int size);
malloc 向系统申请分配指定size个字节的内存空间。返回类型是 void* 类型。void* 表示未确定类型的指针。C,C++规定,void* 类型可以强制转换为任何其它类型的指针。
malloc 只管分配内存,并不能对所得的内存进行初始化,所以得到的一片新内存中,其值将是随机的。malloc分配的内存空间在逻辑上连续的,而在物理上可以连续也可以不连续。

int* p;
p = (int*)malloc(sizeof(int));
//做了两件事,给值给内存,给值是给分配的内存的地址值,给内存是分配的内存可以给它使用

3.对空指针free没问题,n次也没问题,但对非空指针free两次会出问题。所以最好先free再赋null。

二、指针和指针引用作为函数的参数

1.指针作为函数的参数

在这里插入图片描述

2.指针引用作为函数的参数

在这里插入图片描述
区别:
从结果可以知道
指针作为函数参数的时候,在test1被调用的时候,是需要重新开辟一个新的空间p
而指针引用作为函数参数的时候,在test1被调用的时候,并没有开辟一个新的空间,而是直接用传递进来的指针
作用:
指针作为函数参数的时候,能改变的只能是指针所指向的空间位置的值
指针引用作为函数参数的时候,能改变的是指针本身(指针的指向or指针变量的值)和指针所指向的空间位置的值。

三、数组名和数组指针作为函数参数

#include<iostream>
#include<cstdlib>
using namespace std;

void fun1(int* a){
   
	cout<<"-2>"<<a<<"  "<<&a<<endl
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值