每次想用指针来代替数组,有一种强迫症就是,假如元素个数变化,用数组就不方便,但是每次用指针代替数组都会犯各种各样的错误: 首先,指针肯定要初始化一个地址的,初始化一个地址有两种方法,第一种就是用new或者malloc分配一个内存,自然就会产生一个地址,第二个就是创建一个数组,用数组第一个指针赋值,这 ...
分类:
编程语言 时间:
2017-02-21 21:53:23
阅读次数:
217
1.什么叫数组指针? 数组指针:一个指向一维或者多维数组的指针。 比如:int * b=new int[10];指向一维数组的指针b ; 注意,这个时候释放空间一定要delete [] ,否则会造成内存泄露,b 就成为了空悬指针。 int (*b2)[10]=new int[10][10]; 注意, ...
分类:
编程语言 时间:
2017-02-20 01:17:31
阅读次数:
165
1.函数指针——指针函数 函数指针的重点是指针。表示的是一个指针,它指向的是一个函数,例子: int (*pf)(); 指针函数的重点是函数。表示的是一个函数,它的返回值是指针。例子: int* fun(); 2.数组指针——指针数组 数组指针的重点是指针。表示的是一个指针,它指向的是一个数组,例子 ...
分类:
其他好文 时间:
2017-02-15 13:39:01
阅读次数:
174
基础知识:数组不能被拷贝,函数不能返回数组,只能返回数组的指针或者引用。 定义一个 返回数组指针的函数 的方法,以 一个接收参数为 含有10个整型元素的数组的引用 和 返回一个含有10个整型元素的数组的指针 的函数为例。 法一:(不使用别名) 法二: 法三: 法四: 声明一个 返回数组指针的函数 的 ...
分类:
编程语言 时间:
2017-02-05 11:10:11
阅读次数:
199
引例:已知如下程序 试写出程序的输出值。(虽然我很讨厌做这种笔头功夫的题,我也坚信编程语言是在实践中练出来的,但是这个题还是比较经典,所以还是拿来当一个例子来说明一下数组指针到底是个什么玩意) 最初在学习C语言时,就一直为这两个名词所困扰。其实也怪汉语的博大精深,两个词交换一下位置,所表示的含义就不 ...
分类:
编程语言 时间:
2017-01-31 22:41:22
阅读次数:
479
在项目开发过程中,更多的场景是需要一个长度可以动态更新的数据存储结构,切片本身并非是动态数组或数组指针,他内部通过指针引用底层数组,并设定相关属性将数据读写操作限定在指定区域内。比如:/runtime/slice.go
typeslicestruct{
arrayunsafe.Pointer
lenint
capint
..
分类:
其他好文 时间:
2017-01-23 21:48:00
阅读次数:
367
举例:int *p[5]是指针数组int (*p)[5]是数组指针区分两者只要看变量名p周围的修饰符即可。 这里要明确两点:1、不论int *p[5]还是int (*p)[5]都不应该看成一个整体,而应该看成一些修饰符来修饰变量p,从而使p得到准确定义;2、[]的优先级要比*高,相同优先级修饰符,采 ...
分类:
编程语言 时间:
2017-01-22 22:27:06
阅读次数:
185
从如下几个方面介绍GO语言的数据1.字符串
2.数组
3.切片
4.字典
5.结构字符串Go语言中的字符串是由一组不可变的字节(byte)序列组成从源码文件中看出其本身是一个复合结构string.go
typestringStructstruct{
strunsafe.Pointer
lenint
}字符串中的每个字节都是以UTF-8编码存储的..
分类:
编程语言 时间:
2017-01-22 21:41:31
阅读次数:
1635
这种在程序运行过程中申请和释放的存储单元也称为堆对象,申请和释放过程过程一般称为建立和删除。 1、new运算和delete运算 运算符new的功能是动态分配内存,或者称为动态创建堆对象,语法形式为: new 类型名T(初值列表);//用于申请分配存放T类型数据的内存空间,并使用初值列表中给出的值进行 ...
分类:
编程语言 时间:
2016-12-28 18:56:43
阅读次数:
270
指针数组:array of pointers,即用于存储指针的数组,也就是数组元素都是指针 int* a[4] 表示:数组a中的元素都为int型指针,元素表示:*a[i] *(a[i])是一样的,因为[]优先级高于* 数组指针:a pointer to an array,即指向数组的指针 int ( ...
分类:
编程语言 时间:
2016-12-21 20:39:01
阅读次数:
185