c语言-指针1

1.指针是什么 ?

在C语言中,指针是一种变量,用于存储另一个变量的内存地址。通过指针,可以直接访问和操作内存中的数据。

(1)指针的声明 :

int *ptr;

(2)取地址运算符(&)

int a = 10;
int *ptr = &a;

&a 获取变量 a 的内存地址,并将其赋值给指针 ptr

(3)解引用运算符(*)

int b = *ptr;

*ptr 获取 ptr 所指向地址的值,这里 b 将被赋值为 10

2.指针的类型:

(1)指针的类型决定了它所指向的数据类型以及指针运算的行为。指针的类型不仅影响解引用时的操作,还影响指针的算术运算(如加减操作)。在此之前,我们已经学习了C语言的内置数据类型,比如int、float、double等,当然指针也是如此。

char *pc = NULL;
int *pi = NULL;
short *ps = NULL;
long *pl = NULL;
float *pf = NULL;
double *pd = NULL

(2)指针类型的作用

  • 解引用时的操作:
    指针的类型决定了如何解释指针所指向的内存中的数据。例如:

    • int* 指针解引用时,会从内存中读取一个 int 类型的数据。

    • char* 指针解引用时,会从内存中读取一个 char 类型的数据。

  • 指针算术运算:
    指针的加减操作会根据指针的类型进行调整。例如:

    • int* 指针加 1 时,实际地址会增加 sizeof(int)

    • char* 指针加 1 时,实际地址会增加 sizeof(char)

(3)指针的大小:

在大多数系统中,指针的大小是固定的,与它指向的数据类型无关。例如:

  • 在 32 位系统中,指针通常是 4 字节。

  • 在 64 位系统中,指针通常是 8 字节。

 3.野指针:

(1) 野指针(Dangling Pointer) 是指向无效内存地址的指针。使用野指针会导致未定义行为,通常会导致程序崩溃或数据损坏。野指针的产生通常是由于指针所指向的内存已经被释放或失效,但指针仍然保留了原来的地址值。

(2)野指针的成因:

1. 指针未初始化

#include <stdio.h>
int main()
{
    int* ptr;
    *ptr = 20;
    return 0;
}

2. 指针越界访问

#include <stdio.h>
int main()
{
    int arr[10] = { 0 };
    int* ptr = arr;
    int i = 0;
    for (i = 0; i <= 11; i++)
    {
        *(ptr++) = i;
    }
    return 0;
}

如图当指针指向的范围超出数组arr的范围时,p就是野指针。

内容概要:文章介绍了DeepSeek在国内智能问数(smart querying over data)领域的实战应用。DeepSeek是一款国内研发的开源大语言模型(LLM),具备强大的中文理解、推理和生成能力,尤其适用于企业中文环境下的智能问答、知识检索等。它具有数据可控性强的特点,可以自部署、私有化,支持结合企业内部数据打造定制化智能问数系统。智能问数是指用户通过自然语言提问,系统基于结构化或非结构化数据自动生成精准答案。DeepSeek在此过程中负责问题理解、查询生成、多轮对话和答案解释等核心环节。文章还详细展示了从问题理解、查询生成到答案生成的具体步骤,并介绍了关键技术如RAG、Schema-aware prompt等的应用。最后,文章通过多个行业案例说明了DeepSeek的实际应用效果,显著降低了数据使用的门槛。 适合人群:从事数据分析、企业信息化建设的相关从业人员,尤其是对智能化数据处理感兴趣的业务和技术人员。 使用场景及目标:①帮助业务人员通过自然语言直接获取数据洞察;②降低传统BI工具的操作难度,提高数据分析效率;③为技术团队提供智能问数系统的架构设计和技术实现参考。 阅读建议:此资源不仅涵盖了DeepSeek的技术细节,还提供了丰富的实战案例,建议读者结合自身业务场景,重点关注DeepSeek在不同行业的应用方式及其带来的价值。对于希望深入了解技术实现的读者,可以进一步探索Prompt工程、RAG接入等方面的内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值