打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
C语言之字符数组在if{}里面赋值给char *引发的问题

1 问题

我的buff在if{}里面,然后对buff进行内存操作,最后赋值给char *类型的url,发现url最后没有得到数据

如下代码

#include <stdio.h>
#define TRUE 1

void set_value(char *p)
{
    *p = 'c';
    *(p + 1) = 'h';
    *(p + 2) = 'e';
    *(p + 3) = 'n';
}

int main()
{
    char *url = NULL;
    if (TRUE)
    {
char buff[10] = {0};
        set_value(buff);
url = buff;
    printf("first url is %s\n", url);
    }
    //具体操作url
    printf("second url is %s\n", url);
    return 0;
}

我把buff定义在if{}里面,然后在实现一个函数操作buff,然后在里面赋值给url,
然后在{}外面再操作url发现url是NULL的,但是我单独这样写个Demo这个url又不为NULL

2 解决办法

后面再做了优化,把char buff[10] = {0}放在if外面

int main()
{
    char *url = NULL;
    char buff[10] = {0};
    if (TRUE)
    {
        set_value(buff);
url = buff;
    printf("first url is %s\n", url);
    }
    //具体操作url
    printf("second url is %s\n", url);
    return 0;
}

3 总结

一般字符数组赋值给char *,我们最好把字符数组和char *保持同区域

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
10W+字C语言硬核总结(二),值得阅读收藏!
c语言如何将十六进制数赋值给字符数组
C语言难点分析整理
字符匹配strstr小函数
C语言学习——指针精华(2)
指针数组与数组指针
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服