鱼C论坛

 找回密码
 立即注册
查看: 935|回复: 3

[已解决]第09节 复杂的数据类型3 提问

[复制链接]
发表于 2023-6-17 11:46:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
视频源码如下
#include <iostream>

int main(int argc, const char *argv[], const char *envp[])
{
    int a = 123;
    float b = 3.14;
    char c = 'C';
    unsigned long d = 19880808;
    std::string e = "I love FishC! ";

    std::cout << "a的值是: " << a << std::endl;
    std::cout << "b的值是: " << b << std::endl;
    std::cout << "c的值是: " << c << std::endl;
    std::cout << "d的值是: " << d << std::endl;
    std::cout << "e的值是: " << e << std::endl;

    int *ap = &a;
    float *bp = &b;
    char *cp = &c;
    unsigned long *dp;
    std::string *ep = &e;

    *ap = 456;
    *bp = 4.13;
    *cp = 'F';
    *dp = 20230617;
    *ep = "I love Beauty! ";

    std::cout << "a的值是: " << a << std::endl;
    std::cout << "b的值是: " << b << std::endl;
    std::cout << "c的值是: " << c << std::endl;
    std::cout << "d的值是: " << d << std::endl;
    std::cout << "e的值是: " << e << std::endl;

    return 0;
}

视频中运行结果是:
IMG_1157.PNG

但是我编译之后的却是:
PS D:\Desktop\Others\Programming\C Language\网上教学\小甲鱼C++\第09节 复杂的数据类型3> g++ test01.cpp -o test
PS D:\Desktop\Others\Programming\C Language\网上教学\小甲鱼C++\第09节 复杂的数据类型3> ./test
a的值是: 123
b的值是: 3.14
c的值是: C
d的值是: 19880808
e的值是: I love FishC!
PS D:\Desktop\Others\Programming\C Language\网上教学\小甲鱼C++\第09节 复杂的数据类型3> 

我觉得吧,代码是没问题,就是它只显示之前的部分,后边的就不输出了,难道是编译器的事?
最佳答案
2023-6-17 11:58:57
根据您提供的代码和结果,可以看出程序编译和运行都没有报错,但是输出结果只有第一部分。

问题很可能出在指针变量`dp`上,它在定义时并未被初始化,因此其初始值是不确定的。在后面程序中,将赋值操作`*dp = 20230617;`应该导致了程序崩溃或出现未定义行为。

解决这个问题,可以在定义`dp`时给它一个初始值,例如:
unsigned long *dp = nullptr;

表示`dp`指向空地址,或者让`dp`指向一个已存在的`unsigned long`变量。修改之后重新编译和运行程序,应该可以得到正确的输出结果。

求最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-6-17 11:58:57 | 显示全部楼层    本楼为最佳答案   
根据您提供的代码和结果,可以看出程序编译和运行都没有报错,但是输出结果只有第一部分。

问题很可能出在指针变量`dp`上,它在定义时并未被初始化,因此其初始值是不确定的。在后面程序中,将赋值操作`*dp = 20230617;`应该导致了程序崩溃或出现未定义行为。

解决这个问题,可以在定义`dp`时给它一个初始值,例如:
unsigned long *dp = nullptr;

表示`dp`指向空地址,或者让`dp`指向一个已存在的`unsigned long`变量。修改之后重新编译和运行程序,应该可以得到正确的输出结果。

求最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-17 12:54:55 | 显示全部楼层
sfqxx 发表于 2023-6-17 11:58
根据您提供的代码和结果,可以看出程序编译和运行都没有报错,但是输出结果只有第一部分。

问题很可能出 ...

解决了,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-17 12:56:34 | 显示全部楼层

不客气
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-28 01:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表