在 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;
#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;