2019/8/24 C语言回顾(5)

一、二维数组

一般形式

数据类型 数组名[行标][列标];

|

数组内元素的数据类型

int a[2][3]; 数据类型 int

完全初始化

int a[2][3] = {1,2,3,4,5,6};

int a[2][3] = {{1,2,3},{4,5,6}};

注意:行标可以省略,列标必须保留

不完全初始化

int a[2][3] = {1,2,3,4};

int a[2][3] = {{1,2},{3,4}};

不初始化

数组置零 a[2][3] ={0};

引用二维数组元素

数组名[行标][列标]

注:行标和列标都是从0开始

sizeof

行标 * 列标 * 元素数据类型大小

字符数组

char a[6] = {‘h‘,‘e‘,‘l‘,‘l‘,‘o‘,‘\0‘};

char a[6] = {"hello"};

char a[6] = "hello";

char a[] = "hello";

ascii

char a[] = {‘h‘,‘e‘,‘l‘,‘l‘,‘o‘}; 这不是字符数组,只能算asscii码数组

字符串打印方式

printf : %s

puts

都是遇到‘\0‘截止

二、指针

地址

地址常量

指针常量

指针变量

指针变量用来存放指针常量

指针常量和指针变量统称为指针

内存以字节为单位进行划分,每一个字节都有自己的地址编号(0 ~ 2^32 - 1)

指针定义的一般形式:

数据类型  *  指针变量名;

|

指针指向空间元素的数据类型

int a = 10;

int *p = &a;

&:取地址符 取的是首地址:某一段空间的第一个地址编号

*:取值符号 (和取地址符&互为逆运算)

p=&a

*p = *(&a)

*p = a;

指针的初始化

野指针:

int *p;

使用野指针可能会导致段错误

空指针:

int *p = NULL;

操作空指针一定会出现段错误

打印地址

printf %p

所有的指针都是4个字节大小

指针运算

p + 1:地址偏移,偏移指向空间元素的大小

p++:会改变本身指向空间,符合++在前和在后的规则

p < q:本质上比较的是两个指针存放地址的值的大小

(地址值较大的称之为高地址,反之称之为低地址)

p - q:结果为两个地址间相差元素的个数,一般使用在数组运算当中

原文地址:https://www.cnblogs.com/epll/p/11403353.html

时间: 2024-10-12 12:17:37

2019/8/24 C语言回顾(5)的相关文章

2019/8/19 C语言回顾(1)

一.冯诺依曼 将计算机分为5个部分 (1)输入设备:键盘.鼠标 (2)输出设备:显示屏 (3)存储器: 内存(运行内存)RAM:内存条 外存 ROM: 硬盘.光盘.u盘.sd卡 寄存器:在cpu内部 .提高程序的运行效率 (4)运算器 (5)控制器 注:运算器和控制器集成为cpu 二.进制转换 1.十进制  逢十进一    78 = 8*10^0 + 7*10*^1 二进制  逢2进一      1001110 八进制  逢8进1 十六进制  0,1,....a,b,c,d,e,f 3位二进制数

2019/8/20 C语言回顾(2)

一.逻辑运算符 &&  逻辑与 表达式1 && 表达式2 1          1          1 1          0          0 0          1          0 0          0          0 口诀:与0为0,与1不变 特点:当表达式1结果为真的时候,会继续判断表达式2的结果,但如果表达式1的结果为假,则不会去判断表达式2是否成立 || 逻辑或 表达式1 || 表达式2 1          1        1 1 

C语言回顾一“Hello world”

每个学程序的人都是冲"Hello world"开始进入神奇编程的世界! 简单的代码: #include <stdio.h> int main() { printf("Hello World\n"); } #include<stdio.h>将从编译器的安装文件夹下的include文件夹下去搜索stdio.h头文件.stdio.h是标准的输入输出流文件. int main()是整个程序的入口,就好比进入一个房间首先得找到进入房间的入口,也就是房门

网络流测试-2019.3.24

网络流专题测试-2019.03.24 24号的考试了,但是一直忘了写,今天来补一补. defuze:http://hzwer.com/6009.html 不想写题面了,直接说怎么做吧. 其实这道题可以直接用最普通的费用流来做,找增广路时把spfa的比较函数改改就行了,但是我没想到. 可以对概率取对数,转成加法再做,就非常简单了. 注意:找增广路时设置一个精度,如果两条路径的差小于精度,就不进行松弛.否则可能会在几条费用极其相似的道路上反复增光导致超时. 1 # include <cstdio>

「C语言回顾之旅」第一篇:指针详解

说明: 最近学校课程开设了<数据结构>的课程,无疑,数据结构的重要性在IT生涯的进阶路上是不可置疑的,也常说,数据结构是专业性与非专业性的分界线.所以无论以后走的是什么方向,毕竟是读计算机专业的,所以必须学好数据结构的.虽然目前我给自己定的方向是走运维/系统架构方向的,可有句话说得好,不懂开发的运维注定会被淘汰,在IT这一行,要让自己变得更加强大.最近也一直在学Python,感觉还不错,学数据结构相信对自己也肯定有好处的,对一些较为底层的知识有些了解和理解,这样才能走得更远! 无疑C语言就很重

c语言回顾之指针数组和数组指针

数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长.也就是说执行p+1时,p要跨过n个整型数据的长度. 如要将二维数组赋给一指针,应这样赋值:int a[3][4];int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组. p=a;        //将该二维数组的首地址赋给p,也就是a[0]或&a[0][0] p++;       //该语句执行过后,也就是p=p+

C语言回顾

1.C语言共32个关键字 1)数据类型关键字 a.基本数据类型 void char int float double b.类型修饰关键字 short long signed unsigned c.复杂类型关键字 struct union enum typeof sizeof d.存储级别关键字 auto static register寄存器类型  extern const volatile 2)流程控制关键字 a.跳转结构 return continue break goto b.分支结构 if

「C语言回顾之旅」第二篇:指针详解进阶

说明: 第一篇回顾了指针的基本概念以及基本使用,因此对指针也有了一个较为清晰的思路,但实际上第一篇关于指针的内容是不太容易忘记的.这是第二篇中的内容是比较容易混淆,但对于指针的进一步学习也是非常重要的. 一.指向函数的指针 1.函数指针 ·函数指针即指向函数的指针,函数指针值为函数的入口地址,通过使用该指针,即可以使用该函数: ·编写一个程序返回两个数的最大值,通过函数指针调用函数: a.main函数代码如下: #include<stdio.h> int max(int *, int *);

24.C语言最全排序方法小结(不断更新)

希尔排序: 该方法的基本思想是:先将整个待排元素序列切割成若干个子序列(由相隔某个"增量"的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序. 由于直接插入排序在元素基本有序的情况下(接近最好情况),效率是非常高的,因此希尔排序在时间效率上比前两种方法有较大提高. 以n=10的一个数组49, 38, 65, 97, 26, 13, 27, 49, 55, 4为例 第一次 gap = 10 / 2