未初始化指针作为实参的两种错误总结

本文总结了指针作为实参时常见的两种错误,并详细解释了如何避免这些错误,帮助开发者提高代码质量和稳定性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

未初始化指针作为实参的两种错误总结

知识标签:指针, 错误, 传参, 测试


这个程序本是我做搜索引擎项目时出现的类似错误
现在我写了一个测试小程序,以作测试

code

#include<iostream>

//发生段错误,p2指向空,p2[0]访问了不存在的内存
//这种错误编译能通过,运行时出现。很容易找到
void func2(char* p2)
{
    char ch = 'a';
    p2[0] = ch;
}

//p3是func3中的局部变量,p是main中的局部变量
//改变指针p3的指向并没有改变p的指向
//这中错误不经意间就犯了,编译能通过,运行时能通过,只能靠自己的火眼金睛才能发现
void func3(char* p3)
{
    char ch = 'a';
    p3 = &ch;
}

int main(void)
{
    //p没有初始化,但由于编译器的原因,p一般情况下为NULL
    char* p;
    if(NULL == p)
    {
        std::cout << "NULL == p" << std::endl;
    }

    //对于指针p,在函数中的操作一般就2种,这两种情况都会导致错误,见func2和func3
    func3(p);
//  func2(p);
}

总结

NULL指针一定不要作为实参,指针没初始化时不要作为实参

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值