第六章:数组、指针、与字符串

主要内容:

1.数组

2.指针

3.动态存储分配

4.指针与数组

5.指针与函数

6.字符串



内存地址:

1.内存地址的访问方式

通过变量名访问

通过地址访问

2.& var; //表示var在内存中的起始地址



void类型的指针就相当于一个hook(钩子),可以指向任何数据类型。

1.const 数据类型 * ptr //指向常量的指针

常量指针不可以改变所指对象的值,但是可以指向另外的对象(ptr本身可以改变)。

2.数据类型 * const ptr //指针常量

指针本身不能改变,只能指向固定的地址。

3.指针数组  数据类型 *ptr[size]  //这个跟函数的签名类似。

3.指针与函数

参数是:指向常量的指针 、普通指针

指针型函数:

存储类型 数据类型 * 函数名()

指向函数的指针:

存储类型 数据类型(*函数指针名)();

数据指针指向data存储区,函数指针指向code存储区。

4.指针与对象

类名 *指针名;

5.this 指针

1.明确地指出了成员函数当前所操作的数据所属的对象

当通过一个对象调用成员函数时,系统先将该对象的地址赋给this指针,然后调用成员函数,成员函数对对象的数据成员进行操作时,就隐含使用了this指针。

6.new

动态创建对象 ,用初值列表初始化///new 类型名T(初值列表)

动态创建对象数组///new object[size]

动态创建多维数组://这个不熟呀???

new  类型名T[下标表达式1][下标表达式2].....

如果内存申请成功,new运算返回一个指向新分配内存首地址的指针,是一个T类型的数组,数组元素的个数为除最左边一维外各下标表达式的乘积。

eg:

char (*fp)[3];

fp = new char[2][3];

float (*cp)[9][8];

cp = new float[8][9][8];

7.shallow copy and deep copy

8.字符串的存储用数组,没有字符串变量。

时间: 2024-10-21 03:36:20

第六章:数组、指针、与字符串的相关文章

语法》第六章 数组

(本文为阮一峰js标准教程的学习笔记,旨在总结该教程中涉及的知识点大纲及个人所做的一些拓展,方便作为"目录"或者"大纲"复习和查漏补缺,详细内容请参见阮一峰教程原文) 第二部分 语法 *********第六章 数组*********** 一.数组的定义1.概念:按次序排列的一组数,每个值都有编号(从0开始)整个数组用[]表示2.可以定义时赋值,也可定以后赋值.arr[0]='a';3.任何数据类型都可放入数组,[1,'1',[1,2],{},function(){}

C和指针 (pointers on C)——第六章:指针(上)

第六章 指针 这一章,就明显触痛初学者敏感之处了.我也是在一段时间不用C以后就会对这一部分生疏,好吧,其实是对高级指针那块生疏. 当然这一部分总有很多借鉴之处,比如数组范围的问题等,要不我也不会大夏天的这么虐自己看这种书. 总结: 指针变量的值并非它所指向的内存位置所存储的值,而是保存了指向的变量的地址.需要通过间接访问符*来访问指向的变量的值. 单单声明一个指针,而并不进行初始化,是不会分配内存的.所以在指针执行间接访问之前,指针必需进行初始化. 要么指向某个变量.要么去malloc一个内存.

C和指针 (pointers on C)——第六章:指针(下)习题

有一定的难度,作者只做了前三题! 题目请见 http://download.csdn.net/download/wangpegasus/5701765 1. char *find_char(char const *source, char const *chars) { char *ptr; if(source != NULL && chars != NULL) { for (; *source != '\0'; source++) { for (ptr = (char *) chars;

指针 指针与数组 指针与字符串 指针与函数 结构体与指针 宏

指针 指针与数组 指针与字符串 指针与函数?? 指针与数组 1.数组名:数组元素首地址 eg: int array[3]={1,3,6}; 这里array 恒等于&array[0] 2.int *p = a; int *p = 0; int a[]={0}; 3.int *p = a; 均指向数组的首地址 *p是? *(p+1)是?(*p)+1是? *(p+1)决定向下移动几个字节是类型 4.指针可以当数组名使用 p[1] = 3; 恒等于a[1] ;恒等于*(p+1);恒等于*(a+1) 5.

【读书笔记】C#高级编程 第六章 数组

(一)同一类型和不同类型的多个对象 如果需要使用同一类型的多个对象,就可以使用数组或集合(后面章讲). 如果需要使用不同类型的多个对象,可以使用Tuple(元组)类型. (二)简单数组 如果需要使用同一类型的多个对象,可以使用数组.数组是一种结构,它可以包含同一类型的多个元素. 1.数组的声明 在声明数组时,应先定义数组总元素的类型,其后是一堆空方括号和一个变量名. 例子: 以下代码声明了一个包含整形类型的数组 int[] intArray; 2.数组的初始化 声明了数组后,就必须为数组分配内存

《Python核心编程》第六章:序列、字符串、列表和元组

本章大纲 详细介绍字符串.列表.元组的相关操作,常用的序列内建函数,Unicode和编码解码原理,深拷贝和浅拷贝的原理. 知识点 6.1 序列 6.1.1 标准类型操作符 标准类型操作符一般都能适用于所有的序列类型. 6.1.2 序列类型操作符 高效合并: 字符串:''.join(strList) 列表:list1.extend(list2) 实战:遍历一个字符串,每次都把位于最后的一个字符砍掉 for i in [None] + range(-1, -len(strList), -1): pr

第六章 数组名与指针

指针的算术运算符是指针和数组之间的一种关联,但不是唯一关联: 可以使用数组名作为指向数组第一个元素的指针,但是不可以给数组名赋新的值. //如下声明a int a[10]; //用a作为指向数组第一个元素的指针,可以修改a[0]; *a = 11; //通过a + 1来访问a[1]; *(a + 1) = 22; 但是试图使数组名指向其他地方是错误的: #include <stdio.h> int main() { char arr[] = "yangxunwu"; whi

计算机基础-C语言-16章-数组应用-计算字符串长度

字符数组的大小并不代表它所包含字符串的长度.需要通过检查结束符,才能判断字符串的实际长度. 数组和指针的关系 原文地址:https://www.cnblogs.com/happyniqiu/p/10017441.html

第六章 数组与结构

数组 数组是类型相同  数目相同的若干变量大的有序集合 一.一维数组 1.格式: 类型说明符   数组名 [常量表达式] 例如:   int arr[1,2,3,4,5, 6] 格式说明:(1)数组中的每一个变量称为数组元素 (2)数组在内存中存储是占一段连续的存储空间 (3)一个数组名只能在程序中说明一次, (4)常量表达式可以是整数常量.符号常量或常量表达式,  不能包含变量,  其值必须是正整数 2.一维数组在内存中的存储 数组定义以后,  编译器就会为这个数组在内存中分配一串连续的存储单

《JAVA编程思想》学习笔记——第十六章 数组

数组和其它种类的容器之间的区别有三方面:效率,类型和保存基本类型的能力.在Java中,数组是一种效率最高的存储和随机访问对象引用序列的方式.数组就是一个简单的线性序列,这使得元素访问非常快速.但是为这种速度所付出的代价是数组对象的大小被固定,并且在其生命周期中不可改变. 数组强调的是性能而不是灵活性 对象数组和基本类型数组在使用上几乎是相同的; 唯一的区别就是对象数组保存的是引用,基本类型数组直接保存基本类型的值. Arrays实用功能 System.arraycopy():复制数组 equal