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:结果为两个地址间相差元素的个数,一般使用在数组运算当中
 
 
 

猜你喜欢

转载自www.cnblogs.com/epll/p/11403353.html