鱼C论坛

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

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

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

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

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

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

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

  9.     std::cout << "a的值是: " << a << std::endl;
  10.     std::cout << "b的值是: " << b << std::endl;
  11.     std::cout << "c的值是: " << c << std::endl;
  12.     std::cout << "d的值是: " << d << std::endl;
  13.     std::cout << "e的值是: " << e << std::endl;

  14.     int *ap = &a;
  15.     float *bp = &b;
  16.     char *cp = &c;
  17.     unsigned long *dp;
  18.     std::string *ep = &e;

  19.     *ap = 456;
  20.     *bp = 4.13;
  21.     *cp = 'F';
  22.     *dp = 20230617;
  23.     *ep = "I love Beauty! ";

  24.     std::cout << "a的值是: " << a << std::endl;
  25.     std::cout << "b的值是: " << b << std::endl;
  26.     std::cout << "c的值是: " << c << std::endl;
  27.     std::cout << "d的值是: " << d << std::endl;
  28.     std::cout << "e的值是: " << e << std::endl;

  29.     return 0;
  30. }
复制代码


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

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


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

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

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

  1. unsigned long *dp = nullptr;
复制代码


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

求最佳答案
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

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

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

  1. unsigned long *dp = nullptr;
复制代码


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

求最佳答案
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

问题很可能出 ...

解决了,谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

不客气
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-10 05:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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