数组

1.数组的定义和使用:
格式:
数据类型  数组名[元素个数]
元素个数:代表该数组有多少个相同数据类型的变量
下标:用来表示数组中某一个元素
例如:
int scores[10]        //相当于定义了10个int类型的变量     //scores[0]   到scores[9]
[]括起来的成为元素的个数
通过下标找到数组中的某一元素      下标是从0开始的   到数组个数减一
数组下标越界:超出了数组元素个数的下标,如果操作越界数据会出现程序错误  1.乱码结果 2.报错
int scores;
int len=sizeof(score)
printf("%d\n",len);
可以得出scores的长度
int scores[10];
printf(“数组元素的个数:%d\n”,sizeof(scores)/sizeof(int));
可以得出scores的元素个数
求出数组元素个数:int 个数=sizeof(数组名)/sizeof(数组元素|数组数据类型)

数组的初始化和内存结构:
像变量赋值一样  为数组依次赋值
int  sc[10]={1,2,2,3,4,5,6,7,8};
for(int i =0;i<10;i++)
{
     printf("%d\n",sc[i]);
}
如果赋值时括号中依次为数组前面的元素赋值,如果数组长度超过元素个数,后面的值全部初始化为零
#include <stdio.h>
int main()
{
 //数组的内部结构
 int scores[10] = { 98, 97, 96, 95, 94, 93, 92, 91, 90, 99 };
 printf("%p\n", &scores[0]);//%p打印变量的内存地址,是以无符号十六进制格式打印,打印时需要在变量前加上【&】
 return 0;
}

求出数组地址方式:
printf(“%p\n”,数组名)
printf(“%p\n”,数组元素)
1.数组元素+1(sizeof(数据类型))表示数组中下一个元素用①
2.数组名+1(sizeof(数组名))    用②+1会跳过整个数组

求最重小猪:
int max=0;
for(int i= 0;i<10;i++)
{
   scanf("%d\n",&fit[i]);
}
for(int i=10;i<10;i++)
{
   if(max<fit[i])
   max=fit[i]
}
  
7.数组逆置:
   int arr[10]={1,2,3,4,5,6,7,8,9,10};
   for(int i=0;i<10;i++)
{printf(“%d\n”,arr[i])}
int i=0;
int j=sizeof(arr)/sizeof(arr[0])-1//其中sizeof(arr)/sizeof(arr[0])可以求出长度之后再减一可以得到下标
while(i<0)
{
  int temp =arr[i];
  arr[i]=arr[j];
  arr[j]=temp;
  i++;
  j++;
}

8.冒泡排序:
int arr[10]={7,4,2,3,5,8,9,6,1,10};
int len=sizeof(arr)/sizeof(arr[0])-1;
for(int i=0;i<=len;i++)
{
for(int j=0;j<len-i;j++)
{
if(arr[i]>arr[j+1])
int temp =arr[i];
arr[i]=arr[j+1];
arr[j+1]=temp;
}
}
 
9.二维数组的定义,使用,和内存模型:
//二维数组的定义                     元素的个数*4为数组的长度
int arr[10][3];
arr[0][0];arr[0][1];arr[0][2];
arr[1][0];arr[1][1];arr[1][2];
...............
printf("二维数组的长度:%d\n",sizeof(arr));
printf("二维数组中一行的长度:%d\n",sizeof(arr[0]));
printf("二维数组中行数:%d\n",sizeof(arr)sizeof(arr[0]));
printf("二维数组中列数:%d\n",sizeof(arr)sizeof(int));
 

二维数组初始化:
int arr[2][3]={{123},{234}}
第一个[]为行数第二个为列数
外循环行
内循环列

字符数组:
char arr[10]={'h','e','l','l','o'};
//%s会接受字符串结束之前的所有字符    在ascii中就是数字0
printf("%s\n",arr);

字符串追加:
#include <stdio.h>
int main()
{
 char arr1[] = "hello";
 char arr2[] = "world";
 char arrbuf[100] = { 0 };//全部初始化\0
 while (arr[index] != '\0')
 {
  //将非\0的字符添加到arrbuf
  arrbuf[index] = arr[index];
  index++;
 }
 while (arr2[index - 5] != '\0')
 {
  arrbuf[index] = arr2[index - 5]
   index++;
 }
 arrbuf[index] = '\0';
 printf("%s", arrbuf);
 return 0;
}

posted on 2019-04-11 21:14  不冒泡的苏打水  阅读(176)  评论(0编辑  收藏  举报

导航