首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

熬夜整理的万字CC++总结(三),值得收藏

在以下例子中,我们将使用二进制计数法写出值,以便您可以了解对位发生的操作。在一个实际程序中,您可以使用一般的形式的整数变量或常量。...一个合乎逻辑的答案是它表示整个数组,但事实并非如此。在 C中,在几乎所有数组名的表达式中,数组名的值是一个指针常量,也就是数组第一个元素的地址。...(){ //先定义数组类型,再用数组类型定义数组指针 int arr[10] = {1,2,3,4,5,6,7,8,9,10}; //有typedef是定义类型,没有则是定义变量,下面代码定义了一个数组类型...(char*); //打印数组 array_print(p, len); //对字符串进行排序 array_sort(p, len); //打印数组 array_print(p, len);..., i + 1); } return temp; } //打印数组 void array_print(char** arr,int len){ for (int i = 0; i len;

65620

程序员C语言快速上手——高级篇(十)

free(arr); // arr指针保存的地址已经不合法,需重置 arr = NULL; 指针高级 二维数组 如果数组中的元素也是数组,那么这样的数组就是二维数组,在逻辑上...再来看元素内存地址的打印结果 22fe10 22fe10 22fe14 22fe18 22fe1c 可以发现二维数组很像一个二维表格,有行有列,但是从元素的内存地址可以看出,在内存中仍然是连续的一片。...二级指针的实际运用 #include #include // 打印字符串数组 void printStr(char **s,int len){ char...\n",p(a,b)); } 函数指针实用小结 利用函数指针可以实现函数式编程 将函数指针存入数组中,可以像Java、Python这样,实现函数回调通知机制 将结构体与函数指针结合,可以模拟面向对象编程中的类...接触过Java等具有泛型的面向对象编程语言的人,可能马上就会联想到泛型,是的,C语言没有泛型,但是利用void*指针的特点,我们可以使用一些技巧来模拟泛型编程。

1.4K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Go基础之--数组和切片

    :数组的长度也是数组类型的一部分,所以要知道[3]int和[4]int是不同的数组类型 默认情况下一个新数组中的元素初始值为元素类型的零值 如一个证书类型的数组,默认值就是0 初始化数组: 有一下几种方法...关于二维数组的遍历,创建一个二维数组并循环赋值,然后循环打印内容 var c [3][2]int for i := 0; i < 3; i++ { for j := 0; j < 2; j++ { c[...("%#v\n", s1) 这样打印s1的结果为:[]int{4, 5, 6, 7, 8} 这次拷贝就是把s2中的前三个元素拷贝到s1中的前三个,把s1中的前三个进行了覆盖 关于append 内置的函数...{1, 2, 3} s2 := []int{4, 5} s1 = append(s1, s2...) fmt.Printf("%#v\n", s1) 这里在s2后面通过...其实就是把s2中的元素给展开然后在...,其实返回的每个value类型就是rune 而我们知道在go中双引号引起来的是字符串string,在go中表示字符串有两种方式: 一种是byte,代表utf-8字符串的单个字节的值;另外一个是rune,

    75790

    Java中的数组是对象吗?

    数组到底是不是对象, 通过代码验证: int[] a = new int[4]; //a.length; //对属性的引用不能当成语句 int len = a.length; //数组中保存一个字段...而在C++中,数组虽然封装了数据,但数组名只是一个指针,指向数组中的首个元素,既没有属性,也没有方法可以调用。...只是这个类型显得比较奇怪。你可以说a1的类型是int[],这也无可厚非。但是我们没有自己创建这个类,也没有在Java的标准库中找到这个类。...但是如果没有上面的数组特性(如果有两个类A和B,如果B继承(extends)了A,那么A[]类型的引用就可以指向B[]类型的对象),那么数组类型就只能通过Object类型接收,这样就无法在方法内部访问或遍历数组中的各个元素...int len = a.length; //数组中保存一个字段, 表示数组的长度 //以下方法说明数组可以调用方法,java中的数组是对象.这些方法是Object中的方法

    7.3K11

    Go语言基础4 - 数据(基本数据结构)

    数组 在规划内存布局时,数组是非常有用的,有时还能避免过多的内存分配, 在Go中,数组主要用作切片的构件,在构建切片时使用。 数组在Go和C中的主要区别。在Go中: 数组是值。...二维切片 要创建等价的二维数组或切片,就必须定义一个数组的数组, 或切片的切片,示例: type Transform [3][3]float64 // 一个 3x3 的数组,其实是包含多个数组的一个数组...Fprint 用于写入到各种流中:fmt.Fprint 一类的格式化打印函数可接受任何实现了 io.Writer 接口的对象作为第一个实参;比如 os.Stdout 与 os.Stderr 。...--格式: %T 它会打印某个值的类型. fmt.Printf("%T\n", timeZone) 会打印 map[string] int -- 为结构图自定义输出 类似 java 中的 toString...初始化 GO 的huaGo的初始化很强大,在初始化过程中,不仅可以构建复杂的结构,还能正确处理不同包对象间的初始化顺序。 常量 常量在编译时被创建,即便函数中定义的局部变量也一样。

    77600

    指针进阶详解

    C指针进阶 前言 在初级指针中我们知道了一些关于指针的主题: 指针就是个变量,用来存放地址,地址唯一标识一块内存空间。 指针的大小是固定的4/8个字节(32位平台/64位平台)。...字符指针 我们都知道在指针类型中我们知道一种指针类型char* 对于char*一般的使用方法一: int main() { char ch = 'w'; char *pc = &ch;...数组的类型就是把变量名去掉,比如int arr[5],把arr去掉就是数组的类型(int [5]) 在初阶指针章节我们也学了指针数组,指针数组是一个存放指针的数组。...数组是存放相同类型数据的容器,我们之前已经学了指针数组: 比如: int *arr[10]; //数组的每个元素是int* // 以此类推: 函数指针数组就是把函数的地址存到一个数组中,那这个数组就叫函数指针数组...pfunArr指向的是一个数组,其元素类型为数组除去[]就是数组中每个元素的类型。指针变量去掉变量名便是指针所指向内容的类型。 回调函数 回调函数就是一个通过函数指针调用的函数。

    20230

    Go(3)

    ,需要注意的是在切片中也有这种用法,不过含义不一样 var c = [...]int{1,3,4,5,10} 示例: var a[5]int var a[5]string var a[5]float32...长度为5的数组访问如下: a[0], a[1], a[2], a[3], a[4] 数组中的长度:     var a[10]int     lengh :=len(a) 示例代码拆分部分: 数组循环...: 格式化%p,用来打印内存地址 & 符号,取变量地址 尽量用变量来循环 var a [10]int for i :=0;ilen(a);i++{    fmt.Printf("%p\n",&a[i...写法:变量[长度]类型 = [长度]类型[值] 数组赋值:指定下标来指定元素赋值 %#以go的方式打印 var d [5]string = [5]string{1:"abc",4:"zcq"} //%#...fmt.Printf("%#%v\n",d) fmt.Printf("%v\n",a,b,c) 二维数组 var a[8][2]int func test4()  {    //二维数组    var

    36310

    手把手golang基础教程——数组与切片

    今天是golang专题的第五篇,这一篇我们将会了解golang中的数组和切片的使用。 数组与切片 golang当中数组和C++中的定义类似,除了变量类型写在后面。...而假如我们修改一个a中的元素,我们再来打印s,得到的结果就不同了: var a [10]int var s []int = a[0:4] a[0] = 4 fmt.Println(s) 这样得到的结果就是...一个是s在之前切片结束之后的结果长度是2,但是我们居然可以对它切片到下标4的位置。这说明我们在执行切片的时候,执行的对象并不是切片本身,而是切片背后对应的数组。...make操作 一般在我们使用切片的时候,我们都是把它当做动态数组用的,也就是Python中的list。...由于make还可以用来创建其他的类型,比如map,所以我们在使用make的时候,需要传入我们想要创建的变量类型。

    70210

    Go 数据类型篇(五):数组使用入门

    数组中包含的每个数据项被称为数组元素,一个数组包含的元素个数被称为数组的长度。 在 Go 语言中,你可以通过 [] 来标识数组类型,但需要指定长度和元素类型。...数组在初始化的时候,如果没有填满,则空位会通过对应的元素类型零值填充: a := [5]int{1, 2, 3} fmt.Println(a) 上述代码的打印结果是: [1 2 3 0 0] 此外,...我们还可以初始化指定下标位置的元素值,未设置的位置也会以对应元素类型的零值填充: a := [5]int{1: 3, 3: 7} 这样数组 a 的元素值如下: [0 3 0 7 0] 数组长度在声明后就不可更改...数组的长度是该数组类型的一个内置常量,可以用 Go 语言的内置函数 len() 来获取: arrLength := len(arr) 数组元素的访问和设置 可以使用数组下标来访问 Go 数组中的元素,...多维数组的操作与一维数组一样,只不过每个元素可能是个数组,在进行循环遍历的时候需要多层嵌套循环,下面我们通过 Go 语言的多维数组打印出九九乘法表来演示其基本使用: // 通过二维数组生成九九乘法表 var

    44520

    C++基础快速入门

    练习案例1:五只小猪称体重 案例描述: 在一个数组中记录了五只小猪的体重,如:int arr[5] = {300,350,200,400,250}; 找出并打印最重的小猪体重。...二维数组就是在一维数组上,多加一个维度。...总结:在定义二维数组时,如果初始化了数据,可以省略行数 5.3.2 二维数组数组名 查看二维数组所占内存空间 获取二维数组首地址 示例: int main() { //二维数组数组名 int...时,可以获取整个二维数组占用的内存空间大小 5.3.3 二维数组应用案例 考试成绩统计: 案例描述:有三名同学(张三,李四,王五),在一次考试中的成绩分别如下表,请分别输出三名同学的总成绩 语文...len); //打印数据 system("pause"); return 0; } 8.8.2 案例2 案例描述: 设计一个英雄的结构体,包括成员姓名,年龄,性别;创建结构体数组,数组中存放5

    19510

    Go 语言基础入门教程 —— 数据类型篇:数组及其使用

    数组的声明和初始化 数组是所有语言编程中最常用的数据结构之一,Go 语言也不例外,与 PHP、JavaScript 等弱类型动态语言不同,在 Go 语言中,数组是固定长度的、同一类型的数据集合。...和 PHP 一样,Go 语言也通过 [] 来标识数组类型,以下是一些常见的数组声明方法: var a [8]byte // 长度为8的数组,每个元素为一个字节 var b [3][3]int // 二维数组...数组在初始化的时候,如果没有填满,则空位会通过对应的元素类型空值填充: a := [5]int{1, 2, 3} fmt.Println(a) 上述代码的打印结果是: [1 2 3 0 0] 此外,我们还可以初始化指定下标位置的元素值...访问数组元素 和 PHP 索引数组一样,可以使用数组下标来访问 Go 语言数组中的元素,数组下标默认从 0 开始,len(arr)-1 表示最后一个元素的下标: arr := [5]int{1,2,3,4,5...,在进行循环遍历的时候需要多层嵌套循环,下面我们通过 Go 语言的多维数组打印出九九乘法表来演示其基本使用: // 通过二维数组生成九九乘法表 var multi [9][9]string for j

    94320

    【C与数据结构】——寒假提高每日练习Day2

    6个元素,元素类型为char*,fun(s),这里s表示数组首元素的地址,指针的地址,所以用二级指针接收,而数组首元素在这里指的是“ABCD”的首字符,p+1也就是s+1,即指向“EFGH”的‘E’,而打印一个字符串时知道该字符串的首字符便可以打印出来完整的该字符串...A、*(&a[0][0]+5)     B、*(*(a+1)+1)     C、*(&a[1]+1)     D、*(a[1]+1) 答案:->C 解析:首先,A选项,二维数组在内存中的存储它的地址也是连续的...,说明s是一个数组,数组共5个元素,去掉数组名表示数组元素类型,这里为void(*)(int),即函数指针类型,该函数指针指向的函数返回值为void,参数类型为int,因此选B,函数指针数组。...,不能被64位机器给蒙蔽了双眼,一共10*30=300个元素,元素类型位int*,这是一个二维的指针数组。...D、&数组名表示的是取出整个数组的地址,因此也不能用二级指针接收。 ---- 编程题 描述 在一个长为 字符串中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).

    20020

    100天精通Golang(基础入门篇)——第10天:Go语言中的数组

    一、数组(Array) 在Go语言中,数组(Array)是一种基本的数据结构,用于存储一组固定长度的同种数据类型的数据。数组中每个元素在内存中都是连续存储的。...数组是一组相同类型对象的集合,每个对象的类型和大小都相同。数组是一种顺序存储结构,因此数组中的元素可以随机访问,数组的下标从0开始,逐个增加。 数组具有以下特点: 数组长度是固定的,不能动态变化。...数组中每个元素的类型和大小都相同。 数组中的元素在内存中是连续存储的,可以随机访问。 数组是值类型,传递时复制整个数组。...在Go语言中,可以定义多维数组,例如定义一个二维数组: var arr [3][4]int 其中,第一个方括号表示行数,第二个方括号表示列数,也可以使用初始化列表的方式进行初始化,例如: arr :=...在Go语言中,数组是值类型,意味着当数组被传递给函数时,整个数组会被复制,而不是传递数组的指针。因此,如果要修改函数中的数组,必须使用指针。

    25710

    C++基础入门_C语言入门基础

    总结1:直接打印数组名,可以查看数组所占内存的首地址 总结2:对数组名进行sizeof,可以获取整个数组占内存空间的大小 练习案例1:五只小猪称体重 案例描述: 在一个数组中记录了五只小猪的体重...0; } 5.3 二维数组 二维数组就是在一维数组上,多加一个维度。...5.3.1 二维数组定义方式 二维数组定义的四种方式: 数据类型 数组名[ 行数 ][ 列数 ]; 数据类型 数组名[ 行数 ][ 列数 ] = { {数据1,数据2 } ,{数据3,数据4 } };...arr[j + 1] = temp; } } } } //打印数组函数 void printArray(int arr[], int len) { for (int i = 0; i len;...通过冒泡排序的算法,将数组中的英雄按照年龄进行升序排序,最终打印排序后的结果。

    5.7K20

    JavaSE 总复习:夯实基础,迈向进阶之路

    (二)引用数据类型 包括类、接口、数组等。例如创建一个字符串对象:String str = “Hello”; (三)变量声明与初始化 变量在使用前必须先声明,声明格式为数据类型 变量名。...(一)数组的声明与创建 声明一维数组:数据类型[] 数组名; 或 数据类型 数组名[]; 创建数组:数组名 = new 数据类型[数组长度]; 例如:int[] arr = new int[5];...也可以在声明时直接初始化:int[] arr = {1, 2, 3, 4, 5}; (二)二维数组 声明与创建二维数组:数据类型[][] 数组名 = new 数据类型[行数][列数]; 例如:int...对于一维数组: for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } 对于二维数组: for (int i =...例如: Person p = new Student(); p.speak(); 这里p虽然是Person类型,但实际指向Student对象,调用speak方法时会根据Student类中的重写情况来执行

    10610

    【C 语言】二级指针作为输入 ( 二维数组 | 二维数组内存大小计算 | 指针跳转步长问题 )

    int array_len = sizeof(array); 计算一维数组大小 : 该 二维数组 中有 4 个 一维数组 , 每个一维数组有 10 字节 ; // 求二维数组中的一位数组的内存大小...int array_0_len = sizeof(array[0]); 计算二维数组中有多少个一维数组 : 4 个 ; // 求二维数组中一维数组个数 int len =...(array); // 求二维数组中的一位数组的内存大小 int array_0_len = sizeof(array[0]); // 求二维数组中一维数组个数 int..., array 的每个 跳转步长 是 10 字节 , array + 2 相当于跳了 20 字节 , 才能访问到第 3 个元素 array[2] ; 正是由于 上述 跳转步长 的问题 , 在函数中...-1; } // 打印二维数组中的字符串 for(i = 0; i < num; i++) { // 使用数组下标形式访问 printf

    1.4K10
    领券