指针数组

指向元素的指针和指向数组的指针

邮差的信 提交于 2019-12-06 02:31:57
这俩概念还是很不一样,请君明鉴 #include<stdio.h> #include<stdlib.h> #include<time.h> void main() { //指向元素的指针和指向数组的指针 int b[10] = {1,2,3,4,5,6,7,8,10}; int *p = b;//代表指向数组首元素地址的指针!!! int(*q)[10] = &b;//代表指向数组的指针!!! printf("指向数组首元素地址的指针,代表的内存大小%d\n",sizeof(*p)); printf("指向数组的指针,代表的内存大小%d\n", sizeof(*(q))); getchar(); } 来源: https://www.cnblogs.com/saintdingspage/p/11957124.html

Go 语言入门(一)基础语法

怎甘沉沦 提交于 2019-12-06 00:21:19
写在前面 在学习 Go 语言之前,我自己是有一定的 Java 和 C++ 基础的,这篇文章主要是基于 A tour of Go 编写的,主要是希望记录一下自己的学习历程,加深自己的理解 Go 语言入门(一)基础语法 本地安装 Go 语言环境 关于如何安装 Go 语言的编程环境,我推荐大家看 这篇文章 编写 Hello, World 学习语言时,首先编写一个「Hello, World」已经成了程序员的习惯,这里我们也编写一个,顺便测试一下 Go语言环境是否搭建成功了: 首先创建一个名为 hello.go 的文件,编写代码如下: package main import "fmt" func main() { fmt.Printf("Hello, World\n") } 接着我们在命令行中使用 go 工具运行它: $ go run hello.go Hello, World 如果像上面一样看到了「Hello, World」信息,则表示我们已经迈出学习 Go 语言的第一步了。 关于更多 Go 语言的编程方法已经相应命令,我们可以看 这里 ,它为我们清楚地介绍了 Go 语言的环境变量等相关设置。 在都搭建完成之后,我们就可以进入 Go 语言的语法学习了。 包、变量和函数 学习 Go 语言语法之前,我们要知道他是在「C语言」的基础之上发展的,所以他们之间很多语法都是相似的。 包 声明包和导入包

2019 C/C++《阿里》面试题总结

∥☆過路亽.° 提交于 2019-12-05 23:33:38
一、C和C++的区别是什么? C是面向过程的语言,C++是在C语言的基础上开发的一种面向对象编程语言,应用广泛。 C中函数不能进行重载,C++函数可以重载 C++在C的基础上增添类,C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制),而对于C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。 C++中struct和class除了默认访问权限外,别的功能几乎都相同。 二、关键字static、const、extern作用 static和const的作用在描述时主要从类内和类外两个方面去讲: static关键字的作用: (1)函数体内static变量的作用范围为该函数体,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值; (2)在模块内的static全局变量和函数可以被模块内的函数访问,但不能被模块外其它函数访问; (3)在类中的static成员变量属于整个类所拥有,对类的所有对象只有一份拷贝; (4)在类中的static成员函数属于整个类所拥有,这个函数不接收this指针,因而只能访问类的static成员变量。 const关键字的作用: (1)阻止一个变量被改变 (2

PL真有意思(五):数据类型

喜你入骨 提交于 2019-12-05 20:13:15
前言 现在大多数程序设计语言中都有表达式和/或对象的类型概念。类型起着两种主要作用: 为许多操作提供了隐含的上下文信息,使程序员可以在许多情况下不必显示的描述这种上下文。比如int类型的两个对象相加就是整数相加、两个字符串类型的对象相加就是拼接字符串、在Java和C#中new object()隐含在背后的就是要分配内存返回对象的引用等等。 类型描述了其对象上一些合法的可以执行的操作集合。类型系统将不允许程序员去做一个字符和一个记录的加法。编译器可以使用这个合法的集合进行错误检查,好的类型系统能够在实践中捕获很多错误 类型系统 从编译方面的知识我们可以知道,计算机硬件可以按多种不同的方式去解释寄存器里的一组二进制位。处理器的不同功能单元可能把一组二进制位解释为指令、地址、字符、各种长度的整数或者浮点数等。当然,二进制位本身是无类型的,对存储器的哪些位置应该如何解释,大部分硬件也无任何保留信息。汇编语言由于仅仅是对一些二进制指令的“助记符号”翻译,它也是这种无类型情况。高级语言中则总是关联值与其类型,需要这种关联的一些原因和用途就如前面说到的上下文信息和错误检测。 一般来说,一个类型系统包含一种定义类型并将它们与特定的语言结构关联的机制;以及一些关于类型等价、类型相容、类型推理的规则。 必须具有类型的结构就是那些可以有值的,或者可以引用具有值得对象的结构

Go语言

有些话、适合烂在心里 提交于 2019-12-05 19:46:13
2019/11/25 Chenxin 参考 https://www.runoob.com/go/go-ide.html 变量 变量声明 1.指定变量类型,如果没有初始化,则变量默认为0值. var v_name v_type = value //第一种 var v_name v_type //第二种 v_name = value var ( //第三种 vname1 v_type1 vname2 v_type2 ) vname1, vname2 = value1, value2 常见的v_type有: 数值类型/布尔型/字符串/nil型. 以下几种类型为 nil: var a *int //指针 var a []int var a map[string] int var a chan int var a func(string) int var a error // error 是接口 2.go自动根据值判断变量类型 var v_name = value 3.省略var关键字,使用":=". 前提是:=左侧之前没有声明过才行.否则编译报错. := 是一个声明语句(同时可以赋值). 限制: 该方式,只限于在函数体内使用.全局变量不可以使用此方式. 多变量声明 var vname1, vname2 type //只声明.或 var vname1, vname2 = v1, v2 /

C语言 sizeof()用法介绍

爱⌒轻易说出口 提交于 2019-12-05 19:08:20
本文 转自https://www.cnblogs.com/huolong-blog/p/7587711.html 1. 定义 sizeof是一个操作符(operator)。 其作用是返回一个对象或类型所占的内存字节数。 2. 语法 sizeof有三种语法形式: 1) sizeof (object); //sizeof (对象) 2) sizeof object; //sizeof 对象 3) sizeof (type_name); //sizeof (类型) 对象可以是各种类型的变量,以及表达式(一般sizeof不会对表达式进行计算)。 sizeof对对象求内存大小,最终都是转换为对对象的数据类型进行求值。 sizeof (表达式); //值为表达式的最终结果的数据类型的大小 举例: int i; sizeof(int); //值为4 sizeof(i); //值为4,等价于sizeof(int) sizeof i; //值为4 sizeof(2); //值为4,等价于sizeof(int),因为2的类型为int sizeof(2 + 3.14); //值为8,等价于sizeof(double),因为此表达式的结果的类型为double char ary[sizeof(int) * 10]; //OK,编译无误 1. 基本数据类型的sizeof 这里的基本数据类型是指short

leetcode.双指针.88合并两个有序数组-Java

落爺英雄遲暮 提交于 2019-12-05 17:52:22
1. 具体题目 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。 说明:  初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。 示例:  输入:  nums1 = [1,2,3,0,0,0], m = 3  nums2 = [2,5,6], n = 3  输出: [1,2,2,3,5,6] 2. 思路分析 本题应该从数组尾部开始插入值,因为若从头部开始插值,nums1 数组中后面的元素都需要移动,代价太大。可知,nums2 中元素插入 nums1 中后,nums1 中最后有效元素的 index 为 n + m,所以从 nums1[n + m - 1] 出开始赋值,遍历两个数组中的元素,每次比较二者的值,将较大的一个插入到目标位置。 注意:若有一个数组先遍历完成,则将另一个数组中剩余元素填入 nums1 空余位置。 3. 代码 1 public void merge(int[] nums1, int m, int[] nums2, int n) { 2 int i = m - 1, j = n - 1; 3 int index = m + n - 1; 4 while(i >= 0 || j >

双指针法

馋奶兔 提交于 2019-12-05 08:34:20
双指针法: 双指针法,指的是在遍历对象的过程中,不是普通的使用单个指针进行访问,而是使用两个相同方向或者相反方向的指针进行扫描,从而达到相应的目的。 这里的指针,并非专指c中指针的概念,而是指索引,游标或指针,可迭代对象。 LeetCode双指针题解: 1.有序数组的Two Sum Leetcode :167. Two Sum II - Input array is sorted (Easy) Input: numbers={2, 7, 11, 15}, target=9 Output: index1=1, index2=2 题目描述:在有序数组中找出两个数,使它们的和为 target。 思路描述: 该题是经典的双指针法,指针i和指针j,i和j分别指向头和尾, 如果两个指针指向的元素和sum==target,那么得到要求的结果; 如果sum>target,移动较大的元素,使sum变小一些,j--; 如果sum<target,移动较小的元素,是sum变大一些,i++; 代码实现: public int[] twoSum(int[] numbers, int target) { int i = 0, j = numbers.length - 1; while (i < j) { int num = numbers[i] + numbers[j]; if (num == target)

指针数组以及指向指针的指针

北城以北 提交于 2019-12-05 06:42:34
#include <stdio.h> #include <string.h> #define MAXLINES 5000 /*进行排序的最大文本行*/ char *lineptr[MAXLINES]; /*指向文本行的指针数组*/ int readlines(char *lineptr[],int nlines); void writelines(char *lineptr[],int left, int right); /*对输入的文本行进行排序*/ main() { int nlines; /*读取的输入行数目*/ if((nlines=readlines(lineptr,MAXLINES))>=0) { qsort(lineptr,0,nlines); return 0; } else { printf("error:input too big to sort\n"); return 1; } } #define MAXLEN 1000 /*每个输入文本行的最大长度*/ int getline(char *, int); char *alloc(int); /*readlines函数:读取输入行*/ int radlines(char *lineptr[],int maxlines) { int len,nlines; char *p,line[MAXLINE];

花了几个小时总结了一些容易出错的 Java 知识点!

自闭症网瘾萝莉.ら 提交于 2019-12-05 06:09:42
摘自: https://www.cnblogs.com/javaguide/p/11891447.html 花了几个小时总结了一些容易出错的 Java 知识点! 本文已经收录自 JavaGuide (61k+Star!【Java学习+面试指南】 一份涵盖大部分Java程序员所需要掌握的核心知识。欢迎 Star!欢迎骚扰!) 原文地址:https://javaguide.cn/2019/08/20/java/java%E5%9F%BA%E7%A1%80/Java%E7%96%91%E9%9A%BE%E7%82%B9/ 1. 基础 1.1. 正确使用 equals 方法 Object的equals方法容易抛空指针异常,应使用常量或确定有值的对象来调用 equals。 举个例子: // 不能使用一个值为null的引用类型变量来调用非静态方法,否则会抛出异常 String str = null; if (str.equals("SnailClimb")) { ... } else { .. } 运行上面的程序会抛出空指针异常,但是我们把第二行的条件判断语句改为下面这样的话,就不会抛出空指针异常,else 语句块得到执行。: "SnailClimb".equals(str);// false 不过更推荐使用 java.util.Objects#equals (JDK7 引入的工具类)。