在 C++ 结构中显示垃圾值

Showing Garbage values in Structures in c++

#include<iostream>
using namespace std;
struct student
{
  char name [50];
  int roll;
  float marks;
}s = {"Karthik",1,95.3};
int main()
{
  struct student s;
  cout<<"\nDisplaying Information : "<<endl;
  cout<<"Name  : "<<s.name<<endl;
  cout<<"Roll  : "<<s.roll<<endl;
  cout<<"Marks : "<<s.marks<<endl;
   return 0;
} 

输出:

Displaying Information : 
Name  : 
Roll  : 21939
Marks : 2.39768e-36

在 Visual-Studio-Code 上编译(在 linux os 上) 我应该怎么做才能获得正确的输出。

因为您正在使用这个未初始化的 struct:

struct student s; 

隐藏全局 s

相反,在 main 中初始化它:

student s = {"Karthik",1,95.3};

您声明了两个类型为 student 的对象。

第一个在全局命名空间中声明

struct student
{
  char name [50];
  int roll;
  float marks;
}s = {"Karthik",1,95.3};

and 被初始化,第二个在函数 main

的块范围内
struct student s;

而且还没有初始化。

在块作用域中声明的对象隐藏了在全局命名空间中声明的同名对象。

要么删除本地声明,要么使用限定名称来指定在全局命名空间中声明的对象,例如

  cout<<"\nDisplaying Information : "<<endl;
  cout<<"Name  : "<< ::s.name<<endl;
  cout<<"Roll  : "<< ::s.roll<<endl;
  cout<<"Marks : "<< ::s.marks<<endl;