Visual Studio - 奇怪的字符输出

Din*_*har 0 c++ visual-studio visual-studio-2013

我在visual studio 2013中运行这个程序,但它正在打印奇怪的字符.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct{
    char first[11];
    char second[11];
}INFO;

char * str1;
char * str2;
int num;

void bar_function(INFO info)
{
    str1 = info.first;
    str2 = info.second;
    num = 100;
    printf("%s %s\n", str1, str2);
}

void print()
{
    printf("%s %s\n", str1, str2);
    printf("%d\n", num);
}

int main(void)
{
    INFO info;
    strcpy(info.first, "Hello ");
    strcpy(info.second, "World!");

    bar_function(info);
    print();
    system("pause");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

bar_function函数中,我将值赋给全局变量并打印字符串.它打印正确的输出.但是当我在打印功能中打印相同的字符串时,它在visual studio 2013的输出中打印出奇怪的字符.同时num变量在打印功能中打印正确的值.这是相同的输出.

你好,世界!

╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠─²F╠╠╠╠╠─²F

100

此外,相同的程序在Codeblocks中正常工作并打印正确的值.

我无法理解visual studio中这种奇怪的行为.有人可以解释一下吗.

Som*_*ude 5

bar_function变量中info是一个局部变量,因此当函数返回时,它将超出范围并停止存在.

这意味着指向数组的指针将变为无效,并且取消引用它们将导致未定义的行为.

因为你声称是编程C++,你应该使用std::string字符串,而不是指针或数组.当然,尽可能避免全局变量.