什么叫数组呢?我们的第一反应是很多数组组合在一起就是数组,字面意思,当然不止于数字,多个字符也是可以的.
数组属于构造类型 .指相同类型的若干变量组织起来.
类型说明符 数组名 [常量表达式]
int array[] ={0} //定义一个空数组 .
1.数组的类型实际上是指数组元素的取值类型,对于同一数组,所以的数据类型都是一样的
int array1[] = {78,‘o‘,10}; //o会转化为ASCII值,所以也是整形
//也是可以,是不是于上面的话矛盾呢?其实不是的,他说明的是里面的数组元素 都会转化为同一数据类型,不是说开始输入就全部相同
int array2[] ={ 67,32.3,92,16 };
2.方括号的表示元素的个数,不能用变量来表示,只能使用常量或者符号常量.
int a = 3;
int array[a+1] ={...} //肯定要报错
3.打印数组是需要使用for循环,而不能简单的使用printf()函数
for(int i =0 ;i < strlen(array);i++){
printf("array[%d] = %d\n",i,array[i]);
}
4.数组中下标越界
float score[] ={34.4,63.1,98.2,65.3,93.7,39.5};
printf("%f\n",score[56]); //很明显score的下标小于56,在C语言中警告,但是在OC中会报错,需要注意‘
5*.冒泡排序法
看了好多人写的冒泡博客,都是只写个程序,没什么具体的执行过程:
初始: 34 89 12 45 6 27 52 69 八个数组进行从小到大的排序
34 89 12 45 6 27 52 69 //第一位34第二位89比较, 34<89 不用换
34 12 89 45 6 27 52 69 //第二位89和第三位12比较, 89 > 12 需要换
34 12 45 89 6 27 52 69 //第三位89和第四位45比较, 89 > 45 需要换
34 12 45 6 89 27 52 69 //...
34 12 45 6 27 89 52 69 //...
34 12 45 6 27 52 89 69 //...
34 12 45 6 27 52 69 89 //.. @3
到此第一轮循环结束 ,89最大的值出来了,使用7次循环,然后我们在根据 @3的那组数字在来一遍 知道最后就剩2个数组 ,不用在判断了.
通过判断需要使用八轮 这样的循环,所以for循环嵌套
for(int i = 0 ; i < n-1 ;i++){ //n代表个数 i从0开始,从上面的规律就可以看出i< n-1 , i 代表内部循环的轮数
for(int j =0 ; j <n-i-1;j++ ) { //第一轮和7次循环 7+1 =8 8就是n,但是最后剩2个数字不用判断 h或者(for j =n-1;j>=n;j--){}
//交换数值,在内部循环中交换
if( array[j] > array[j+1]){
int temp =array[j];
array[j] = array[j+1];
array[j+1] =temp;
}
}
}
5.字符数组
char str[] ="Iphone5S"; //@1
char str1[] = {‘I‘,‘p‘,‘h‘,‘o‘,‘n‘,‘e‘,‘5‘,‘S‘}; // @2
这两种方式来声明字符str和str1是差不多相同,唯一不同的是@1后面还有一个隐藏的结束符号.完整的Str="Iphone5S\0"