gpt4 book ai didi

c++ - Visual Studio - 奇怪的字符输出

转载 作者:太空宇宙 更新时间:2023-11-04 15:59:08 25 4
gpt4 key购买 nike

我在 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;
}

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

Hello World!

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

100

此外,同一程序在 Codeblocks 中完美运行并打印正确的值。

我无法理解 visual studio 中的这种奇怪行为。谁能解释一下。

最佳答案

bar_function 中,变量 info 是一个局部变量,因此它将超出范围并在函数执行时不复存在返回。

这意味着指向数组的指针将变得无效,取消引用它们将导致 undefined behavior .

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

关于c++ - Visual Studio - 奇怪的字符输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48747131/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com