重要且强大的指针初识——2

目录

1、万能指针

2、const修饰的指针变量

3、指针作为返回值


1、万能指针

"万能指针" 这个术语通常指的是 void* 类型的指针。void* 是一个特殊类型的指针,它可以指向任何类型的数据,但是在被解引用之前,必须被转换为正确的类型。这是因为 void* 只是一个地址,它不包含关于它所指向数据类型的任何信息。

当你想初始化一个 void * 类型的指针变量时,你应该确保它指向一个有效的内存地址或者表示它不指向任何地址(即它是一个空指针)。

使用 void*(万能指针)的简单示例:

2、const修饰的指针变量

const关键字用于声明一个不可变的量,即常量。

const用于修饰指针变量时,它有两种主要的用法:

一是声明一个指向常量的指针。

二是声明一个指针常量。

指向常量的指针

当一个指针被声明为指向常量时,你不能通过这个指针来修改它所指向的数据。这意味着指针指向的内容是只读的。

ptr是一个指针,它可以指向一个整数,但是你不能通过这个指针来修改它所指向的整数的值。

示例:

指针常量

const直接放在指针声明符*之前时,它表示指针本身是一个常量,即指针的值(它所指向的地址)在初始化之后不能被修改。

ptr是一个常量指针,它被初始化为指向x的地址。之后,你不能将ptr重新指向其他地址(比如&y)。但是,你可以通过ptr来修改它所指向的值(如果它不是指向一个常量的话)。

同时修饰指针和指向的内容

const修饰指针本身和它指向的内容,这样你就既不能修改指针指向的内容,也不能修改指针本身的值。

ptr是一个常量指针,指向一个整型常量。因此,你既不能通过ptr来修改x的值,也不能将ptr重新指向其他地址。

3、指针作为返回值

指针可以作为函数的返回值。当一个函数返回一个指针时,它实际上返回的是内存中某个对象的地址。

通常用于在函数内部分配内存(例如使用malloc),并将这块内存的地址返回给调用者。或者,它也可以用于返回指向函数内部某个对象的指针,以便在函数外部访问该对象。

  1. #include <stdio.h> 和 #include <stdlib.h>:包含标准输入输出库和标准库,分别用于printfmalloc/free函数。

  2. createInteger 函数:

    • 它接受一个整型参数value
    • 使用malloc在堆上分配足够的内存来存储一个整数。
    • 如果内存分配成功,将value存储在分配的内存中,并返回指向这块内存的指针。
    • 如果内存分配失败(malloc返回NULL),则返回NULL
  3. main 函数:

    • 调用createInteger函数,并将返回的指针存储在returnedPtr中。
    • 检查returnedPtr是否为NULL
    • 如果不是NULL,则通过解引用指针(*returnedPtr)访问并打印存储的整数值。
    • 使用free函数释放之前通过malloc分配的内存,避免内存泄漏。
    • 如果returnedPtrNULL,则打印一条错误信息。

注意在实际编程中,总是检查内存分配是否成功是一个好习惯。此外,在使用完动态分配的内存后,务必释放它,以避免内存泄漏。

  • 21
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值