精华内容
下载资源
问答
  • 若变量均已正确赋初值,则以下语句中错误的是(C) (A) t1=t2; (B) t2.num1=t1.num1; (C) t2.mark=t1.mark;//mark为结构体数组,不能直接赋值?? (D) t2.num2=t1.num2; ​====如题参考答案说为结构体的...
  • 一、关于java自动赋值问题 java不允许将未经初始化的变量用作操作数,简单来说,就是变量在使用之前,...这里与C和C++不同,在C,如果定义未初始化得到的会一串随机的数组。 局部变量:定义在方法体内的变...

    一、关于java中自动赋值问题

    java中不允许将未经初始化的变量用作操作数,简单来说,就是变量在使用之前,必须初始化。而java中为变量赋初值仅有以下几种情况。
    首先明白什么是实例变量什么是局部变量。因为java在赋初始值时只会为实例变量赋初始值,对于局部变量如果定义未初始化而使用,会编译错误。这里与C和C++不同,在C中,如果定义未初始化得到的会是一串随机的数组。

    局部变量:定义在方法体内的变量
    由于java是面向对象的,一个java程序是由多个类和资源组成的。而函数是一个方法,是解释对象的一种行为。简单来说,除了类中的成员变量,其他均可以成为是局部变量。这里的均,包括在main函数体内的变量。所以,即使main中变量定义未初始化直接输出也会导致错误。

    实例变量:定义在类中但在任何方法之外。
    类的成员变量(注意!这里的成员变量并不包括类变量,类变量可以理解成java中的静态变量)可以理解成是实例变量,而用new运行算符为类实例化的变量也可以理解成实例变量
    java中赋初值只为实例变量赋初值。

    **首先来看,局部变量不赋值直接使用问题。**此时,若报错,即可证明,系统未为局部变量赋初始值

    1. 在这里插入图片描述
      这里定义一个类,类中定义局部变量,变量未赋值直接输出,报错。

    2. 在这里插入图片描述
      main函数中定义变量未赋初始值直接输出,同样报错,因为m是一个局部变量,系统不会为局部变量赋初始值。

    接着对于实例变量赋初值,初始值为什么

    class Student{
    	
    	int stu(){
    		int m = 5;
    		return m;
    	}
    }
    public class 赋值 {
    
    	public static void main(String[] args) {
    				public static void main(String[] args) {
    			Student s = new Student();
    			Student student[] = new Student[5];
    			int in[] = new int[5];
    			double dou[] = new double[5];
    			String st[] =new String[5];
    			boolean boo[] = new boolean[5];
    			System.out.println("s:"+s);//s是对Student类的引用,其存放的是地址
    			System.out.println("student:"+student);
    			System.out.println("in:"+in);//m中存放的是数组的首地址,和C语言类似
    			System.out.println("dou:"+dou);
    			System.out.println("st:"+st);
    			System.out.println("boo:"+boo);
    			for(int i = 0;i<5;i++) {
    				System.out.print("student["+i+"] = "+student[i]+"   ");
    				System.out.print("in["+i+"] = "+in[i]+"   ");
    				System.out.print("dou["+i+"] = "+dou[i]+"   ");
    				System.out.print("st["+i+"] = "+st[i]+"   ");
    				System.out.print("boo["+i+"] = "+boo[i]+"   ");
    				System.out.println();
    			}	
    	}
    }
    

    运行结果:
    在这里插入图片描述
    对于Student s = new Student(); s称为Student的引用。而数组名存放的是数组的首地址,故输出的也是地址。而对于数组中其他自动赋值情况如上述输出。

    二、对于字符数组的一些感想

    		Student student[] = new Student[5];
    		st[0] = "hello";
    		System.out.println(st[0]);
    		System.out.println(st[1]);
    

    运行结果:
    在这里插入图片描述
    这里可知在java中字符数组是以字符串形式存储,和C语言不同
    C语言中没有字符串,字符串在字符数组中是以字符形式存储

    展开全文
  • 以上代码如果没有ret['odd']=1那一行,则myObject.myMethod()返回的Series中都是错误的值(看着像是内存未初始化,比如-2.24934335e308之类),而随便给ret添加点什么内容,返回值就是正确的了。 但是在以下计算...
  • 以下是完整代码 ``` #include "pch.h" #include using namespace std; typedef struct { int weight; BTreeNode *left; BTreeNode *right; }BTreeNode; BTreeNode* CreateHuffman(int a[], int n) ...
  • 什么是预解析: 简单来说就是在在js代码执行之前会有以下操作: 1.所有的var开头定义的变量,数组,对象等都会在预解析是赋值undefined。 2.所有的function声明的函数都会在预解析是声明(其他形式的函数一定不会!...
    • 对于初入前端的我,虽然遇到很多次这次坑,也知道是未定义的意思,但是每次就是要找半天,今天遇到的是下面这种情况:

    由于不了解js预解析导致的undefined错误

    什么是预解析:

    简单来说就是在在js代码执行之前会有以下操作:
    1.所有的var开头定义的变量,数组,对象等都会在预解析是赋值undefined。
    2.所有的function声明的函数都会在预解析是声明(其他形式的函数一定不会!!!)
    下面就是我今天遇到的问题:(仅插入有问题的一段)

    console.log(operation['add']);
    var operation = {
    	       add :      function(num1,num2){
    			return parseInt(num1) + parseInt(num2);
    		     }
    		     }

    相信大家很容易就看出来问题,这里运行时出出现’add’ undefined;
    而我,今天就是这个错误找了半天,就算知道这行有错误,我也没发现是因为后面的operation还未定义,属实哭了。
    希望大家引以为戒,因为这个错误确实容易反还难找,尤其是在真个项目中,对象和var定义的函数时,真的会找到哭,希望对大家有帮助。

    写在最后的话:

    遇到undefined时一定要先自己预解一下,而不要傻乎乎的认为我明明声明函数了什么的,血的教训!!!

    展开全文
  • 类型系统的一些概念,众说纷纭,使用上也比较乱。...导致程序终止执行,如除0,Java中数组越界访问 untrapped errors。 出错后继续执行,但可能出现任意行为。如C里的缓冲区溢出、Jump到错误地址 Forbidde

    https://www.zhihu.com/question/19918532

    类型系统的一些概念,众说纷纭,使用上也比较乱。有些东西,甚至不好严格定义。以下算学术界的一种相对“严格”的说法。


    1. 先定义一些基础概念
    Program Errors
    trapped errors。导致程序终止执行,如除0,Java中数组越界访问
    untrapped errors。 出错后继续执行,但可能出现任意行为。如C里的缓冲区溢出、Jump到错误地址

    {

    untrapped errors,致命性的错误(Error):程序进入了死循环、递归无法结束、内存溢出等。这类错误只能在编程阶段解决,运行时程序本身无法解决。只能依靠其他程序干预,否则会一直处于非正常状态。

    trapped errors,非致命性的异常(Exception):除数为0、操作数超出数据范围、文件并不存在、欲装入的类文件丢失、网络连接中断……这类错误是可以检测和处理的,所以产生了相应的异常处理机制。

    }


    Forbidden Behaviours

    语言设计时,可以定义一组forbidden behaviors. 它必须包括所有untrapped errors, 但可能包含trapped errors.

    Well behaved、ill behaved
    well behaved: 如果程序执行不可能出现forbidden behaviors, 则为well behaved。
    ill behaved: 否则为ill behaved...


    2. 有了上面的概念,再讨论强、弱类型,静态、动态类型

    强、弱类型
    强类型strongly typed: 如果一种语言的所有程序都是well behaved——即不可能出现forbidden behaviors,则该语言为strongly typed。
    弱类型weakly typed: 否则为weakly typed。比如C语言的缓冲区溢出,属于trapped errors,即属于forbidden behaviors..故C是弱类型
    前面的人也说了,弱类型语言,类型检查更不严格,如偏向于容忍隐式类型转换。譬如说C语言的int可以变成double。 这样的结果是:容易产生forbidden behaviours,所以是弱类型的

    动态、静态类型
    静态类型 statically: 如果在编译时拒绝ill behaved程序,则是statically typed;
    动态类型dynamiclly: 如果在运行时拒绝ill behaviors, 则是dynamiclly typed。


    3. 误区

    大家觉得C语言要写int a, int b之类的,Python不用写(可以直接写a, b),所以C是静态,Python是动态。这么理解是不够准确的。譬如Ocaml是静态类型的,但是也可以不用明确地写出来。。
    Ocaml是静态隐式类型


    静态类型可以分为两种:
    如果类型是语言语法的一部分,在是explicitly typed显式类型;
    如果类型通过编译时推导,是implicity typed隐式类型, 比如ML和Haskell


    4.下面是些例子
    无类型: 汇编
    弱类型、静态类型 : C/C++
    弱类型、动态类型检查: Perl/PHP
    强类型、静态类型检查 :Java/C#
    强类型、动态类型检查 :Python, Scheme
    静态显式类型 :Java/C
    静态隐式类型 :Ocaml, Haskell
    展开全文
  • 你必须知道的495个C语言问题

    千次下载 热门讨论 2015-05-08 11:09:25
    6.22 如何在一个文件判断声明为extern的数组的大小(例如,数组定义和大小在另一个文件)?sizeof操作符似乎不行。 6.23 sizeof返回的大小以字节计算的,怎样才能判断数组有多少个元素呢? 第7章 内存...
  • 所有变量都局部变量,为了使得定义的函数可以使用外部变量,使用global语句。而你要将该变量的作用范围限制在该函数之内,使用static语句。 $g_var = 1 ; // 全局范围 function test() { global $g_var; // 这样...
  • 什么是p而不是它指向的字符为const? 10 1.19 为什么不能像下面这样在初始式和数组维度值使用const值?const int n=5; int a[n]; 10 1.20 const char *p、char const *p和char *const p有什么区别? 10 ...
  • 《你必须知道的495个C语言问题》

    热门讨论 2010-03-20 16:41:18
    什么是p而不是它指向的字符为const? 10 1.19 为什么不能像下面这样在初始式和数组维度值使用const值?const int n=5; int a[n]; 10 1.20 const char *p、char const *p和char *const p有什么区别? 10 ...
  • 代码语法错误分析工具pclint8.0

    热门讨论 2010-06-29 07:00:09
    选项还可以放在宏定义中,例如: #define DIVZERO(x) /*lint -save -e54 */ ((x) /o) /*lint -restore */ LINT的选项很多共有300多种,大体可分为以下几类: 1)错误信息禁止选项 该类选项用于禁止生成某...
  • 数据集介绍:提供什么是 ADO.NET 数据集、如何对它们进行类型化或非类型化、它们的用途及结构的概述。 用于创建数据集的 Visual Studio 工具:描述 Visual Studio 提供了哪些允许创建数据集的功能,以及在何时选用...
  • 怎样做指针的主人

    2020-05-17 22:54:33
    以下内容可能比较水,如果有错误,请与我联系,并对此修改。 什么是指针 先来说说我的理解,我把整个程序想象成一个豪宅,每个变量是这座豪宅的每个房间,而指针就是这么多房间其中一个房间的门牌号。接下来是官方...


    应学院要求,写了一篇指针的学习心得,顺便也写成博客发了吧…
    以下内容可能比较水,如果有错误,请与我联系,并对此修改。

    什么是指针

    先来说说我的理解,我把整个程序想象成一个豪宅,每个变量是这座豪宅的每个房间,而指针就是这么多房间中其中一个房间的门牌号。接下来是官方的定义
    C语言里,变量存放在内存中,而内存其实就是一组有序字节组成的数组,每个字节有唯一的内存地址。CPU 通过内存寻址对存储在内存中的某个指定数据对象的地址进行定位。这里,数据对象是指存储在内存中的一个指定数据类型的数值或字符串,它们都有一个自己的地址,而指针便是保存这个地址的变量。也就是说:指针是一种保存变量地址的变量。如下图所示:
    在这里插入图片描述
    左侧连续的十六进制编号就是内存地址,每个内存地址对应一个字节的内存空间。而指针变量保存的就是这个编号,也即内存地址。

    为什么要学习指针

    在C语言中,指针的使用非常广泛,因为使用指针往往可以生成更高效、更紧凑的代码。总的来说,使用指针有如下好处:
    1)指针的使用使得不同区域的代码可以轻易的共享内存数据,这样可以使程序更为快速高效;
    2)C语言中一些复杂的数据结构往往需要使用指针来构建,如链表、二叉树等;
    3)C语言是传值调用,而有些操作传值调用是无法完成的,如通过被调函数修改调用函数的对象,但是这种操作可以由指针来完成,而且并不违背传值调用。

    如何声明一个指针

    指针的声明比普通变量的声明多了一个一元运算符“”,而“”是间接寻址或者间接引用运算符。如下图,p是一个指针,保存着一个地址,该地址指向内存中的一个变量,*p则会访问这个地址所指向的变量。

    int *p;        // 声明一个 int 类型的指针 p
    char *p        // 声明一个 char 类型的指针 p
    int *arr[10]   // 声明一个指针数组,该数组有10个元素,其中每个元素都是一个指向 int 类型对象的指针
    int (*arr)[10] // 声明一个数组指针,该指针指向一个 int 类型的一维数组
    int **p;       // 声明一个指针 p ,该指针指向一个 int 类型的指针
    

    注意指针数组和数组指针的区别

    初始化指针

    声明一个指针变量并不会自动分配任何内存,在对指针间接访问之前,指针必须要初始化,如下图所示:

    /* 方法1:使指针指向现有的内存 */
    int x = 1;
    int *p = &x;  // 指针 p 被初始化,指向变量 x ,其中取地址符 & 用于产生操作数内存地址
    
    /* 方法2:动态分配内存给指针 */
    int *p;
    p = (int *)malloc(sizeof(int) * 10);    // malloc 函数用于动态分配内存
    free(p);    // free 函数用于释放一块已经分配的内存,常与 malloc 函数一起使用,要使用这两个函数需要头文件 stdlib.h
    

    未初始化指针的后果:如果一个指针没有被初始化,那么程序不知道它会指向哪里,可能指向一个非法地址,这样会报错,“运气好的话”,会指向一个合法地址,或许程序会正常运行,但是这个指针所指向的地址的变量的值会被恶意修改,到时候电脑可能就……

    NULL指针

    NULL 指针是一个特殊的指针变量,本身是宏定义的,其本质上就是0,表示不指向任何内存的空指针。但是NULL在C和C++里的用法又是不一样的,就不多细说了。可参考这篇C/C++中对NULL的理解与总结

    指针的用法

    在这里就简略描述一下:指针的运算、指针与数组、指针与结构、指针与函数等…可参考:c语言常见的几种指针用法

    总结

    指针在计算机里充当着一个很重要的角色,我们要了解它,要弄懂它,我们要做豪宅的主人,不要做豪宅的客人!

    参考:
    https://blog.csdn.net/soonfly/article/details/51131141
    https://www.cnblogs.com/lulipro/p/7460206.html
    https://www.cnblogs.com/tongye/p/9650573.html

    展开全文
  • 基本的Java脚本-源码

    2021-02-14 19:38:51
    他们永远无法以5岁以下的数字开头错误的x5岁的数字 资料类型 数字; 他们可以双精度或整数,你知道的东西。 细绳; “您想要的任何字符串” 布尔值真假 空值; 明确设置没有值的值 未定义对于尚未定义的变量 目的;...
  • 动态内存分配

    2017-06-19 21:42:27
    内存管理的艺术专题五:内存管理的艺术。包括以下章节: 动态内存分配 程序的三国天下 ...定义数组的时候必须指定数组长度 而数组长度在编译期就必须决定的 需求:程序运行的过程,可能需要使用一些额外的内
  • 接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它...
  • 而不能用一个语句输出整个数组,下面的写法是错误的: printf("%d",a); void main() { int i,a[10]; for(i=0;i;i++) a[i++]=2*i+1; for(i=9;i>=0;i--) printf("%d",a[i]); printf("\n%d %d\n",a[5.2],a[5.8]); }  ...
  • excel的使用

    2012-11-25 17:06:01
    数组名的设置步骤:选定数组域,单击“插入”菜单,选择“名称”项中的“定义”命令,输入数组名,单击“确定”按钮即可。更简单的命名办法为:选择数组域,单击名称框,直接输入名称就行了。矩阵函数Excel进行...
  • 8.7.1 什么是指针数组 8.7.2 指向指针数据的指针 8.7.3 指针数组作main函数的形参 8.8 动态内存分配与指向它的指针变量 8.8.1 什么是内存的动态分配 8.8.2 怎样建立内存的动态分配 8.8.3 void指针类型 8.9 有关指针...
  • 第二次作业

    2018-12-07 14:10:00
    博客园 作业2 1 目前自己学习存在的薄弱的知识点具体有哪些?每个薄弱的知识点都如何获知的,每个薄弱的知识点需要列举具体的例子说明。(5分) ① 指针:指针变量的赋值...③ 数组定义:常犯以下错误:...
  • 你必须知道的495个C语言问题(PDF)

    热门讨论 2009-09-15 10:25:47
    5.4 NULL 是什么, 它怎么定义的? . . . . . . . . . . . . . . . . . . 23 5.5 在使用非全零作为空指针内部表达的机器上, NULL 如何定义 的? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...
  • 以下是在plSQL执行测试结果没有任何问题。 存储过程代码: CREATE OR REPLACE PROCEDURE PROC_GetData ( v_dateTime date, v_tiger number, p_cur out SYS_REFCURSOR---游标返回 ) as v_sql varchar2(2000) := ...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 142
精华内容 56
关键字:

以下数组定义中什么是错误的