精华内容
下载资源
问答
  • 2022-02-28 18:23:58

    给数组赋值有两种情况:
    (1)声明的同时初始化
    int a[5]={1,2,3,4,5};
    (2)声明后再初始化
    int a[5];
    a[0]=1;a[1]=2;a[2]=3;a[3]=4;a[4]=5;

    注意!在c、c++中不允许将数组声明和整体初始化分开!
    如:
    int a[5];
    a[5]={1,2,3,4,5}
    这样做会导致语法错误!
    错误分析:由于数组下标从零开始,a[5]根本就不存在!
    就算存在,此时的a[5] 也只代表它自己!根本不能代表数组整体!

    因为C/C++中,数组名就是数组第一个元素的地址,也就是一个常量指针,

    比如,int a[100] , b[100];
    则a和b都是常量指针int*const a(其值肯定是不同的),

    如果你执行a = b;那就是企图修改常量指针a的值,

    而在C/C++里,任何常量都是不允许被修改的。
    a[1]或*a才是a中第一个元素的内容。
     

    更多相关内容
  • 【数组不能整体赋值!!!】老师的

    对数组整体赋值

    【数组不能整体赋值!!!】老师的拳拳教诲依旧回荡耳畔(๑òᆺó๑)(噗,有点不对劲)

    aaaaa那到底能不能整体赋值呢,当然还是有办法的啦~

    具体实现

    首先整理一下实现思路:写一个函数,传入目标数组和所需要赋的各个值,实现将所有值存进数组中。

    那么问题就在于数组的长度不确定,所要传入的参数个数也不确定。
    这时候可变参数就派上用场了!!

    详细可以看看这篇:printf是如何实现可变参数的?自定义函数能否实现参数可变?【C语言】

    [ 了解可变参数后就直接开始咯 ]
    实现过程:第一个参数设置为数组,通过sizeof获取数组长度,按照该长度使用循环将各个参数的值赋给数组

    下面挂上代码(以整型数组为例,其他数组同理)

    //给整型数组整体赋值
    void setArray(int arr[], ...)
    {
    	int length = sizeof(arr);  //获取该数组的长度
    	va_list val;
    	va_start(val, arr);
    	for (int i = 0; i < length; i++)
    	{
    		arr[i] = va_arg(val, int);  //给每个元素赋值
    	}
    	va_end(val);
    }
    

    思路简单清晰不难理解,使用也挺方便,可以当做工具函数用上。
    用法:setArray( 数组名 ,参数1,参数2 …)


    盾来弯矛刺,石立曲水激(寒冰小澈)

    展开全文
  • 赋值语句中需要注意如下区别:存储器赋值不能在一条赋值语句中完成,但是寄存器可以。因此在存储器被赋值时,需要定义一个索引。下例说明它们之间的不同。 reg [1:5] Dig; //Dig为5位寄存器。 . . . Dig = 5'b...

    http://blog.sina.com.cn/s/blog_9424755f0101rhrh.html

    存储器是一个寄存器数组。存储器使用如下方式说明:

    reg [ msb: 1sb] memory1 [ upper1: lower1],

    memory2 [upper2: lower2],. . . ;

    例如:

    reg [0:3 ] MyMem [0:63]

    //MyMem为64个4位寄存器的数组。

    reg Bog [1:5]

    //Bog为5个1位寄存器的数组。

    MyMem和Bog都是存储器。数组的维数不能大于2。注意存储器属于寄存器数组类型。线网数据类型没有相应的存储器类型。

    单个寄存器说明既能够用于说明寄存器类型,也可以用于说明存储器类型。

    parameter ADDR_SIZE = 16 , WORD_SIZE = 8;

    reg [1: WORD_SIZE] RamPar [ ADDR_SIZE-1 : 0], DataReg;

    RamPar是存储器,是16个8位寄存器数组,而DataReg是8位寄存器。

    在赋值语句中需要注意如下区别:存储器赋值不能在一条赋值语句中完成,但是寄存器可以。因此在存储器被赋值时,需要定义一个索引。下例说明它们之间的不同。

    reg [1:5] Dig; //Dig为5位寄存器。

    . . .

    Dig = 5'b11011;

    上述赋值都是正确的, 但下述赋值不正确:

    reg BOg[1:5]; //Bog为5个1位寄存器的存储器。

    . . .

    Bog = 5'b11011;

    有一种存储器赋值的方法是分别对存储器中的每个字赋值。例如:

    reg [0:3] Xrom [1:4]

    . . .

    Xrom[1] = 4'hA;

    Xrom[2] = 4'h8;

    Xrom[3] = 4'hF;

    Xrom[4] = 4'h2;

    为存储器赋值的另一种方法是使用系统任务:

    1) $readmemb (加载二进制值)

    2) $readmemb (加载十六进制值)

    这些系统任务从指定的文本文件中读取数据并加载到存储器。文本文件必须包含相应的二进制或者十六进制数。例如:

    reg [1:4] RomB [7:1] ;

    $ readmemb ("ram.patt", RomB);

    Romb是存储器。文件“ram.patt”必须包含二进制值。文件也可以包含空白空间和注释。下面是文件中可能内容的实例。

    1101

    1110

    1000

    0111

    0000

    1001

    0011

    系统任务$readmemb促使从索引7即Romb最左边的字索引,开始读取值。如果只加载存储器的一部分,值域可以在$readmemb方法中显式定义。例如:

    $readmemb ("ram.patt", RomB, 5, 3);

    在这种情况下只有Romb[5],Romb[4]和Romb[3]这些字从文件头开始被读取。被读取的值为1101、1100和1000。

    文件可以包含显式的地址形式。

    @hex_address value

    如下实例:

    @5 11001

    @2 11010

    在这种情况下,值被读入存储器指定的地址。

    当只定义开始值时,连续读取直至到达存储器右端索引边界。例如:

    $readmemb ("rom.patt", RomB, 6);

    //从地址6开始,并且持续到1。

    $readmemb ( "rom.patt", RomB, 6, 4);

    //从地址6读到地址4。

    展开全文
  • 现象: 数组的整体赋值 int a[3] = {1,2,3}; int b[3]; b = a; 报错: 结构体的整体赋值 struct BOOK { int id; char name[20]; }; struct BOOK a = {3,"活着"}; struct BOOK b = a; printf("%d-%s\n",b.id,b.name);...

    现象:

    数组的整体赋值

    int a[3] = {1,2,3};
    int b[3];
    b = a;

    报错:

    结构体的整体赋值

    struct BOOK
    {
        int id;
        char name[20];
    };
    
    
    struct BOOK a = {3,"活着"};
    struct BOOK b = a;
    
    printf("%d-%s\n",b.id,b.name);

    结构体的整体赋值,相当于将a中成员的值赋值给b中对应的成员,b中成员影响a中成员的值。

    #include<stdio.h>
    
    struct BOOK
    {
        int id;
        char name[20];
    };
    
    int main()
    {
    
        struct BOOK a = {3,"活着"};
        struct BOOK b = a;
        b.id = 5;
    
        printf("%d-%s\n",a.id,a.name);
        printf("%d-%s\n",b.id,b.name);
    
        return 0;
    }

    因为a中成员空间的分配是发生在声明结构体变量a的时候,b中成员空间的分配是发生在声明结构体变量b的时候。两个变量的成员具有自己的内存空间,互不影响。

    解释:

    数组名是数组首元素的地址,而b的数据类型是 int [3],而数组名a是一个地址,数据类型为int *,因此赋值的时候两边数据类型不一致,又转化不了,因此报错。

    结构体变量的名称是结构体空间的名称,是变量,不是地址常量,因此可以赋值。同理,结构体中的成员如果是数组,也不能整体赋值,如果是字符串可以使用strcpy,如果是数组则需要循环赋值。

     

    拓展:

    数组不可以整体赋值但是指针可以,结构体可以,基础数据类型也可以。

    #include<stdio.h>
    
    struct BOOK
    {
        int id;
        char *name;
    };
    
    int main()
    {
    
        struct BOOK a = {3,"活着"};
        struct BOOK b = a;
        b.id = 5;
        b.name="西游记";   //如果结构体中name声明为char name[20];则整体赋值会报错
    
        printf("%d-%s\n",a.id,a.name);
        printf("%d-%s\n",b.id,b.name);
    
        return 0;
    }
    

    但是指针指向的数据只能整体修改,不能部分修改,但是数组可以部分修改。

     

     

    展开全文
  • 对数组进行“整体赋值

    千次阅读 2012-03-30 15:47:08
    数组是不可以整体赋值的,但常常需要用到数组的赋值,以避免写循环。这能否做到?   C语言中能赋值的只有变量,只要让数组变量化,变量赋值时岂不捎带将数组完成了赋值?!   能含有数组的类型只有结构体。...
  • 一起跟随小编过来看看吧Numpy中的数组整体处理赋值操作一直让我有点迷糊,很多时候理解的不深入。今天单独列写相关的知识点,进行总结一下。先看两个代码片小例子:例子1:In [2]: arr =np.empty((8,4))In [3]: ...
  • 对数组整体赋值,以及两个数组间的复制容易出错,这里使用string头文件中的memset和memcpy进行 不必遍历数组,速度快。 代码: /* Project: 数组的整体赋值与复制 Date: 2018/07/31 Author: Frank Yu memset(数组...
  • C试题库有答案的

    2021-06-27 02:34:17
    C++试题库一、选择题1、求“abc\\12\n”字符串的长度( C )(A) 5 (B) 6 (C) 7 (D) 82、字符串常量”\tMyNane\103”的长度是:( B )(A) 6 (B) 8 (C) 12 (D) 143、设x=7,执行语句y=++x,则y等于( D )(A) 6 (B) 7 (C) 9 ...
  • 可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值 D.不可以用关系运算符对字符数组中的字符串进行比较 为啥c是错的嘞? 难道s[10]={"happy"}这样 的语句不算是通过赋值运算符“=”对字符数组整体赋值吗?
  • C++ 课程作业 客观题整理(错题)

    千次阅读 2021-06-27 02:34:15
    A 对象数组的下标是从0开始的 B 对象数组的数组名是一个常量指针 C 对象数组的每个元素是同一个类的对象 D 对象数组只能赋初值,而不能再赋值 解析:肯定是可以再赋值的,只不过在赋值的时候一定要为对象的数据成员...
  • VHDL中数组赋值写法

    千次阅读 2020-12-03 13:13:08
    VHDL中不允许对数组直接赋值 ,先对变量赋值,再由变量赋值给数组才可以。参考代码中对iram_128_t_mem(i) 赋值写法。 library IEEE; use IEEE.std_logic_1164.all; entity iram_128_t is port ( WE : in std_...
  • 单片机的C语言编程过程中,经常会用到数组的赋值和修改变量,但是一般情况下,修改变量都是通过for循环来实现,这对整体程序的运行造成了一定的延迟,那有没有一个简单地方法来实现这个功能呢? 实现方法 #include &...
  • 同一类对象间可相互赋值 B.可以使用对象数组 C.对象不可以用作函数参数 D.一个对象可以用作另一个类的成员 9.声明一个没有初始化参数的对象,需调用 A.指定参数构造函数 B.拷贝构造函数 C.初始化函数 D.默认构造函数...
  • C语言对数组的初始赋值还有以下几点规定:1.可以只给部分元素赋初值。当{ }中值的个数少于元素个数时,只给前面部分元素赋值。例如: staticint a[10]={0,1,2,3,4};表示只给a[0]~a[4]5个元素赋值,而后5个元素自动...
  • 对数组整体赋值,以及两个数组间的复制容易出错,这里使用string头文件中的memset和memcpy进行 不必遍历数组,速度快。 之前没有头文件,显示decla 头文件: 代码: /* Project: 数组的整体赋值与复制 Date: ...
  • c语言给数组赋值有哪些形式

    千次阅读 2021-05-21 05:22:07
    c语言给数组赋值有哪些形式发布时间:2020-04-21 16:19:02来源:亿速云...c语言给数组赋值的3种形式在C语言中,对数组进行赋值的三种形式1、通过循环的形式 即:数组名[下标] 对数组的元素进行依次赋值#include in...
  • }三按下列要求编程。(20分)1:编写一个交换两个数据的函数,实现从大到小的顺序排列输出。在主函数中输入这3个整数,并输出交换后的排列。要求分别采用引用调用和传址调用两种方式实现。提示:(1)引用调用方式:函数...
  • python数组赋值

    千次阅读 2020-11-29 01:37:14
    广告关闭腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元... 现在arr数组已经被赋值了三个元素,其实这一步把数组定义和赋值都完成了,在开发中通常也是定义和赋...
  • 但是这样整体的值就是16843009 0的二进制补码全0 -1的二进制补码全1 所以最好就是取0或者-1 int A[10]; memset(A,-1,sizeof(A)); fill fill函数存在于 algorithm头文件下,需要引用此头文件 fill可以对...
  • 为数组整体赋初始值

    千次阅读 2020-04-17 19:57:09
    char p[10]={'1'};...使用以上赋值方法得出的结果是: 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 曾经的我!一直天真的以为使用第一、第二种初始化方法时,会给数组中的每个元素都赋上初始值!然而!并...
  • 使用函数实现数组元素的赋值

    千次阅读 2019-09-25 13:20:31
    2:你赋值的数 但是元素个数需不需实参返回给函数呢? 来看下一段代码 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<Windows.h> int Init(int array[],int set) { ...
  • 如何给Verilog中的数组初始化赋值

    千次阅读 2020-12-31 11:12:32
    字符串初始化 两种方式直接等号赋值,用new初始化,直接等号赋值放入内存池,其它变量也可以引用;new初始化分配内存空间,不可引用;字符串赋值为null 初始化了,并且有了引用,但是没有指向任何内存空间; 2、详解...
  • 感动,我终于学会了Java对数组求和

    千次阅读 2021-04-22 18:33:12
    Java之数组篇 动手动脑,第六次Tutorial--数组 这次的Tutorial讲解了Java中如何进行数组操作,包括数组声明创建使用和赋值运算,写这篇文章的目的就是通过实际运用已达到对数组使用的更加熟练,下面是实践 ......
  • C++数组赋值

    千次阅读 2020-06-20 15:27:58
    情况1:无{} int #include<iostream> using namespace std; int main() { int a[5]; a[1] = 2; for (int i : a) { cout << i <<" "; } system("pause"); return 0;...#i
  • #include int main(){int i,a[10];for(i=0;i<10;i++)a[i]=i+1;for(i=0;i<5;i++)a[i+5]=a[i];for(i=0;...}扩展资料:使用规则1....当{ }中值的个数少于元素个数时,只给前面部分元素赋值。例如:stati...
  • java数组整体赋值技巧

    千次阅读 2013-02-16 16:08:56
    在C语言中类似于两个数组整体赋值的操作是不被允许的 #include <stdio.h> int main(int argc, char *argv[]) { int a[] = {1, 2, 3}; int b[3]; b = a; //error: ISO C++ forbids assignment of arrays ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,011
精华内容 4,004
关键字:

对数组整体赋值