IOS开发之路开发之路–C语言数组和字符串语言数组和字符串
概览概览
数组在C语言中有着特殊的地位,它有很多特性,例如它的存储是连续的,数组的名称就是数组的地址等。而在C语言中是没
有String类型的,那么如果要表示一个字符串,就必须使用字符串数组。今天主要就介绍如下三个方面:
一维数组 多维数组 字符串
一维数组一维数组
一维数组操作比较简单,但是需要注意,数组长度必须是固定的,长度不能使用变量进行初始化;如果声明的同时进行赋值则
数组长度可以省略,编译器会自动计算数组长度;同时数组不能先声明再一次性赋值(当然可以对每个元素一一赋值)。
#include <stdio.h>
int main(){
int len = 2;
//int a[len] = { 1, 2};//错误,不能使变量
int a[2];//正确
a[0] = 1;
a[1] = 2;
//a[2] = 3;//超过数组长度,但是编译器并不会检查,运行报错
int b['a'] = {1,2,3};//'a'=97,所以可以作为数组长度,但是后面的元素没有初始化,其值默认为0
for (int i = 0; i < 97; ++i){
printf("b[%d]=%d",i,b[i]);
}
int c[2 * 3];//2*3是固定值可以作为数组长度
int d[] = { 1, 2, 3 };//如果初始化的同时赋值则数组长度可以省略,当前个数为3
}
扩展扩展–数组的存储数组的存储
数组在内存中存储在一块连续的空间中,如果知道数组类型(int、float等)和初始地址就可以知道其他元素的地址,同时由于
数组名等于数组第一个元素的地址,所以当数组作为参数(作为参数时形参可以省略)其实是引用传递。
#include <stdio.h>
int main(){
int const l = 3;
int a[l] = { 1, 2,3 };
for (int i = 0; i < l; ++i){
//由于当前在32位编译器下,int型长度为4个字节,可以判断出三个地址两两相差都是4
printf("a[%d]=%d,address=%x", i, a[i], &a[i]);
}
/*当前输出结果:
a[0] = 1, address = c9f95c
a[1] = 2, address = c9f960
a[2] = 3, address = c9f964*/
}
我们看一下上面定义的数组在内存中存储结构