结构体-vs2015左操作数必须为左值

问题描述

vs2015左操作数必须为左值
#include
#include

struct nameinfo
{
char name[50];
char phone[50];
int num[20];
};

void main()
{
struct nameinfo a;
a.num=120;//左操作数必须为左值
pritnf(""%d"" a.num);
system(""pause"");

}

这是为什么?

解决方案

//在这里你的num是一个数组,a.num表示这个数组的首地址(可看下面运行结果为16进制地址),这个地址是确定的,我们不可以对其进行赋值
//对变量才可以进行赋值操作
void main()
{
struct nameinfo a;
//a.num=120;//左操作数必须为左值
printf(""%p"" a.num);
system(""pause"");
}

解决方案二:
//这样才可以 数组名表示首地址
void main()
{
struct nameinfo a;
a.num[0]=120;//左操作数必须为左值
printf(""%d"" a.num[0]);
system(""pause"");
}

解决方案三:
在C语言中,数组名表示的是数组的首地址,是一个地址常量。既然是常量,就不能作左值。

时间: 2024-08-02 15:51:28

结构体-vs2015左操作数必须为左值的相关文章

c++-C++ 为什么同一段代码第一次提示左操作数必须为左值,改过运行之后再改回原来的,就不提示错误了。

问题描述 C++ 为什么同一段代码第一次提示左操作数必须为左值,改过运行之后再改回原来的,就不提示错误了. 选择排序 template void selectSort(T a[],int size) { int i,j,k; T tmp; for(i=0;i<size-1;i++) { k=i; for(j=i+1;j<size;j++) { if(a[j]<a[k]) k=j; } tmp=a[i];a[i]=a[k]; a[k]=tmp; } int main() {...} vs2

c语言左操作必须为左值

问题描述 c语言左操作必须为左值 #include void main(){ char a; scanf(""%c""&a); a>64 &&a96 && a}这样输入是正确的,#include void main(){ char a; scanf(""%c""&a); a>64 &&a96 && a<123 ? printf(&

如何在结构体数组中删掉重复值

问题描述 如何在结构体数组中删掉重复值 假如结构体数组中的数据为:3 3 5 5 5 3 7 0 2 5 ,删除后的结构体数组中的数据为:3 5 3 7 0 2 5 解决方案 用个土方法吧,先吧结构体的数据截取出来,放在数组里遍历.在截取该数组的足后一个对象来遍历比较是否有相同的,有就删除,没有就吧该对象存放在新的数组中. 解决方案二: 如果你的数据最大小于数组的长度则可以这样实现.思想: 根据拆装箱思想,先统计各个数据重复个数,再删除重复数据 #include #include using n

xcode-c语言关于结构体类型的函数的返回值return

问题描述 c语言关于结构体类型的函数的返回值return 定义了一个全局变量的结构体,然后又定义了一个结构体类型的函数,函数的返回值如何返回一个空值,显然return 0;是不行的 解决方案 1)可以用结构体指针,因为指针的null是一个典型的"空",相对于int的0更能体现"空值"的含义,也最方便 2)结构体属于你自己定义的变量,所以你也可以规定当这个结构体里面的变量的值是某种情况是,认为这个结构体类型的变量是"空",比如一般意义上的int认为

c语言的结构体

什么是结构体? 简单的来说,结构体就是一个可以包含不同数据类型的一个结构,它是一种可以自己定义的数据类型,它的特点和数组主要有两点不同,首先结构体可以在一个结构中声明不同的数据类型,第二相同结构的结构体变量是可以相互赋值的,而数组是做不到的,因为数组是单一数据类型的数据集合,它本身不是数据类型(而结构体是),数组名称是常量指针,所以不可以做为左值进行运算,所以数组之间就不能通过数组名称相互复制了,即使数据类型和数组大小完全相同. 定义结构体使用struct修饰符,例如: struct test

C/C++中的结构体

什么是结构体? 简单的来说,结构体就是一个可以包含不同数据类型的一个结构,它是一种可以自己定义的数据类型,它的特点和数组主要有两点不同,首先结构体可以在一个结构中声明不同的数据类型,第二相同结构的结构体变量是可以相互赋值的,而数组是做不到的,因为数组是单一数据类型的数据集合,它本身不是数据类型(而结构体是),数组名称是常量指针,所以不可以做为左值进行运算,所以数组之间就不能通过数组名称相互复制了,即使数据类型和数组大小完全相同. 定义结构体使用struct修饰符,例如: struct test

C++中结构体的的慨念和使用方法

什么是结构体? 简单的来说,结构体就是一个可以包含不同数据类型的一个结构,它是一种可以自己定义的数据类型,它的特点和数组主要有两点不同,首先结构体可以在一个结构中声明不同的数据类型,第二相同结构的结构体变量是可以相互赋值的,而数组是做不到的,因为数组是单一数据类型的数据集合,它本身不是数据类型(而结构体是),数组名称是常量指针,所以不可以做为左值进行运算,所以数组之间就不能通过数组名称相互复制了,即使数据类型和数组大小完全相同. 定义结构体使用struct修饰符,例如: C++ 代码 struc

详解C++程序中定义struct结构体的方法_C 语言

什么是结构体?简单的来说,结构体就是一个可以包含不同数据类型的一个结构,它是一种可以自己定义的数据类型,它的特点和数组主要有两点不同,首先结构体可以在一个结构中声明不同的数据类型,第二相同结构的结构体变量是可以相互赋值的,而数组是做不到的,因为数组是单一数据类型的数据集合,它本身不是数据类型(而结构体是),数组名称是常量指针,所以不可以做为左值进行运算,所以数组之间就不能通过数组名称相互复制了,即使数据类型和数组大小完全相同. 结构体的定义 定义结构体使用struct修饰符,例如: struct

Linux socket编程:addrinfo结构体与getaddrinfo函数

1. 概述 IPv4中使用gethostbyname()函数完成主机名到地址解析,这个函数仅仅支持IPv4,且不允许调用者指定所需地址类型的任何信息,返回的结构只包含了用于存储IPv4地址的空间.IPv6中引入了getaddrinfo()的新API,它是协议无关的,既可用于IPv4也可用于IPv6.getaddrinfo函数能够处理名字到地址以及服务到端口这两种转换,返回的是一个addrinfo的结构(列表)指针而不是一个地址清单.这些addrinfo结构随后可由套接口函数直接使用.如此以来,g