一、二维数组
一般形式
数据类型 数组名[行标][列标];
|
数组内元素的数据类型
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