qq_24425513
qq_24425513
采纳率0%
2016-11-08 14:07 浏览 2.0k

C++全局结构体变量赋值,读取时不一致

最近遇到一个问题,在对全局的结构体变量进行赋值之后,再读取其中内容的时候发现在Debug下是正常的,在Release下不正常。
下面这个代码是可以重现这个问题的:一个全局的结构体变量,在主函数中对它进行赋值,然后打印出来结构,发现和赋值不一致,并且在Debug和Release下的结果不一致。
代码:
// Struct.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include

using namespace std;

struct MyStruct
{
int a;
int b;
int c;
char* ca;
char* cb;
char* cc;
}st;
int main(int argc, _TCHAR* argv[])
{
//MyStruct st;
st.a = 1;
st.b = 2;
st.c = 3;
st.ca = "ca";
st.cb = "cb";
st.cc = "cc";
printf("a: %d; b: %d; c %d: ; ca : %c; cb : %c; cc : %c;", st.a, st.b, st.c, st.ca, st.cb, st.cc);

getchar();
return 0;

}

Debug下结果:

图片说明

Release:

图片说明

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答 默认 最新

  • zqbnqsdsmd zqbnqsdsmd 2016-11-08 16:15
    点赞 评论 复制链接分享
  • qq_35644234 Ouyang_Lianjun 2016-11-08 16:24

    你的这个明显就是语法错误,我再vs2013上运行你的程序,首先是我没修改时,分别在debug和release两种模式下的运行结果:
    Debug:
    图片说明
    Release:
    图片说明

    下面是我对你的代码做了一点修改,主函数的那些参数是没关系的,只是我们建立的工程种类不同

     #include<iostream>
    using namespace std;
    struct MyStruct
    {
        int a;
        int b;
        int c;
        char* ca;
        char* cb;
        char* cc;
    }st;
    int main()
    {
        //MyStruct st;
        st.a = 1;
        st.b = 2;
        st.c = 3;
        st.ca = "ca";
        st.cb = "cb";
        st.cc = "cc";
        //未修改
        //printf("a: %d; b: %d; c %d: ; ca : %c; cb : %c; cc : %c;", st.a, st.b, st.c, st.ca, st.cb, st.cc);
        //修改后,你要知道c语言中输出字符数组是如何输出的
        printf("a: %d; b: %d; c %d: ; ca : %s; cb : %s; cc : %s;", st.a, st.b, st.c, st.ca, st.cb, st.cc);
        getchar();
        return 0;
    }
    

    Debug下:
    图片说明
    Release下:
    图片说明

    点赞 评论 复制链接分享

相关推荐