学习内容
一维数组,二维数组 创建 ,初始化,数组名
代码笔记
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
//一维数组
//数组的创建
//数组:相同元素类型的集合
//数组的创建方式
//typt_t arr_name [const_n];
//元素类型 常量表达式,用来指定数组大小
//int main()
//{
// //创建数组
// int arr[10];
// char ch[5];
// double data1[20];
// double data2[20];
//
// int n = 10;
// int arr2[n];
// //在c99标准之前,数组的大小必须是常量
// //之后可以是变量,为了支持变长数组
//
//}
//数组的初始化:创建数组的同时给它赋合理的值
//int main()
//{
// int arr[10] = { 1,2,3 };//不完全初始化,剩余的元素默认初始化为0
// int arr1[10] = { 1,2,3,4,5,6,7,8,9,10 };//完全初始化
//
// char ch1[10] = "abc";//a b c \0 0 0 0 0 0 0
// char ch2[10] = { 'a','b','c' };//a b c 0 0 0 0 0 0 0
//}
//一维数组的基本使用 :[]
//int main()
//{
// int arr[] = { 1,2,3,4,5,6,7,8,9,10 };//[]下标引用操作符
// //下标 0 1 2 3 4 5 6 7 8 9
// int i = 0;
// int sz = sizeof(arr) / sizeof(arr[0]);//数组的大小可以被计算
// /*for (i = 0; i < sz; i++)
// {
// printf("%d\n", arr[i]);
// }*/
//
// /*for (i = sz - 1; i >=0; i--)
// {
// printf("%d\n", arr[i]);
// }*/
//
// //打印数组的每个元素的地址
// for (i = 0; i < sz; i++)
// {
// printf("&arr[%d]=%p\n",i, &arr[i]);//整形元素占4个字节 每个地址之间相差4
// }
// //数组在内存中是连续存放的
// return 0;
//}
//二维数组
//二维数组的创建及初始化
//int main()
//{
// // 1 2 3 4
// // 2 3 4 5
// // 3 4 5 6
// int arr1 [3][4] = {1,2,3,4,2,3,4,5,3,4,5,6};//三行 四列 按顺序存储 剩余元素默认初始化为零
// int arr2 [3][4] = { {1,2},{2,3},{3,4} };//数据不足 提前分组
// int arr3 [ ][4] = { 1,2,3,4,2,3, };//可以省略行但是不能省略列
// /*char arr3 [5][10];*/
// return 0;
//}
//二维数组的使用
// 行,列都从0开始
//1 2 3 4
//2 3 4 5
//3 4 5 6
//int main()
//{
// int arr[3][4] = { 1,2,3,4,2,3,4,5,3,4,5,6 };
// int i = 0;
// //全部打印
// /*for (i = 0; i < 3; i++)
// {
// int j = 0;
// for (j = 0; j < 4; j++)
// {
// printf("%d ", arr[i][j]);
// }
// printf("\n");
// }*/
//
// //打印某一元素
// /*printf("%d\n", arr[2][2]);*/
//
// //打印输入的数组
// /*for (i = 0; i < 3; i++)
// {
// int j = 0;
// for (j = 0; j < 4; j++)
// {
// scanf("%d", &arr[i][j]);
// }
// }
// for (i = 0; i < 3; i++)
// {
// int j = 0;
// for (j = 0; j < 4; j++)
// {
// printf("%d ", arr[i][j]);
// }
// printf("\n");
// }*/
//
//
//
// printf("%d", sz);
// return 0;
//}
//int main()
//{
// int arr[3][4] = { 1,2,3,4,2,3,4,5,3,4,5,6 };
// int i = 0;
//
// for (i = 0; i < 3; i++)
// {
// int j = 0;
// for (j = 0; j < 4; j++)
// {
// printf("&arr[%d][%d]=%p\n",i,j, &arr[i][j]);//二维数组存储也时在内存中连续存放的
// }
// }
// return 0;
//}
//数组越界
//数组的下标是有范围限制的 数组的下标是从0开始的,如果数组有n个元素,最好一个元素的下标就是n-1。
//所以下标如果小于0,或者大于n-1,就是数组越界访问了,超出了数组合法空间的访问
//C语言本身时不做数组下标的越界检查,编译器也不一定报错,并不意味这程序就是正确的,需要程序员自己检查。
//数组作为函数参数
//将数组排成升序
//0 1 2 3 4 5 6 7 8 9
//采用冒泡排序算法,对数组进行排序
//形参是指针的形式
//void bubble_sort(int* arr,int sz)
//形参是数组的形式
//void bubble_sort(int arr[],int sz)
//{
// int k = 0;
// //趟数
// for (k = 0; k < sz-1; k++)
// {
// int i = 0;
// //一趟冒泡
// for (i = 0; i < sz -(k+1); i++)
// {
//
// if (arr[i] > arr[i + 1])
// {
// //交换
// int j = arr[i];
// arr[i ] = arr[i+1];
// arr[i+1] = j;
// }
// }
// }
//}
//
//
//int main()
//{
// int arr[] = { 9,8,7,6,5,4,3,2,1,0 };
// int sz = sizeof(arr) / sizeof(arr[0]);
// bubble_sort(arr,sz);
//
// int i = 0;
// for (i = 0; i < sz; i++)
// {
// printf("%d ", arr[i]);
// }
//
// return 0;
//}
//数组名
//数组名确实能表示首元素的地址,但有两个例外
//1.sizeof(数组名),这里的数组名表示整个数组,计算的是整个数组的大小,单位是字节
//2.&数组名,这里的数组名表示整个数组,取出整个数组的地址
//int main()
//{
// int arr[10] = { 0 };
// printf("%p\n", arr);//arr是首元素的地址
// printf("%p\n", arr+1);
// printf("\n");
// printf("%p\n",&arr[0]);//首元素的地址
// printf("%p\n", &arr[0]+1);
// printf("\n");
// printf("%p\n", &arr);//数组的地址 移动了一整个数组的空间
// printf("%p\n", &arr+1);
// printf("\n");
// int n = sizeof(arr);
// printf("%d", n);
//}
//二维数组的数组名理解
//int main()
//{
// int arr[3][4];
// //int sz = sizeof(arr);
// //printf("%d\n", sz);
// arr;//二维数组的数组名也表示数组首元素的地址
//
// //计算行数
// //int sz = sizeof(arr) / sizeof(arr[0]);
// //计算列数
// //int sz = sizeof(arr[0])/sizeof(arr[0][0])
// return 0;
//}
感悟思想
整理清楚 加油!
标签:sz,arr,int,C语言,学习,++,数组,printf From: https://blog.csdn.net/lovemelater618/article/details/141037116