---恢复内容开始---
在学习c语言的过程中,最复杂的知识便是标题中的复杂数据类型了,因为包括了数组,字符串,指针等多种数据类型,在这一环节中,我们不免要接触到内存,分析出该数据类型的在内存中的存储方法,就可以比较明确的认识到该类型的运行原理,下面就分析一下我在学习该视频中的学习心得吧。
一、数组
1.数组,从字面上看,就是一组数据的意思,是的,数组的作用就是用来存储一组数据的。数组的特点是只能存放同一类型的数据,比如int 比如double。
2.数组的格式,元素类型 数组名[元素个数] 比如 int age[3];
3.数组的简单使用,数组的初始化为:int age[3]={0,1,2}; 值得注意的是,数组的下标是从0开始而不是1,所以数组的最后一个元素的下标永远是数组元素-1。
1 #include<studio.h> 2 int main() 3 { 4 int age[3]={1,2,3}; 5 int age[3]={1,2};// 可以只赋值前面部分元素 6 int age[]={1,2,3};//可以不写清元素个数,系统自动根据元素个数定义 7 int age[3]={[1]=1,[2]=2}; //这是直接给第2和3个元素赋值 8 //这几种都是正确写法 9 10 /*常见错误 11 int a[]; 12 int[3] a; 13 int a[b]; 14 a = {10, 11}; 15 a[3] = {10,9,8,}; 16 17 18 */ 19 return 0; 20 }
4.(1)数组的内存分析,数组分配的空间大小是根据数据类型所占据的字节数*元素个数来决定的。
(2)存储空间的划分(内存的分配是从高地址到低地址进行的,但一个数组内部元素又是从低到高进行的)
(3)数组名就是数组的地址
(4)如果计算数组元素的个数:可以用sizeof(数组名)/sizeof(数组元素的数据类型)即可得到元素个数
5数组作为函数传递时,因为是地址的传递,所以与以前的基本数据类型的值传递有很大区别,我们可以通过下面的代码来认识一下。
1 void change(int array[]) 2 { 3 printf("array==%p\n",array); //输出数组的地址不用&,数组名就代表数组的地址 4 array[0]=100; 5 } 6 7 void change2(int n) 8 { 9 n= 100; 10 } 11 12 int main 13 { 14 int age[5]={1,2,3,4,5}; 15 int a=10; 16 change(age); 17 change2(a); 18 printf("age[0]==d%",age[0]);//此处输出100,因为数组的传递是地址传递,函数内更改的数据值相当于更改了该地址的数据值 19 printf("a==d%",a);//此处输出为10,基本数据类型的数据传递村纯粹是值传递。 20 21 return 0; 22 }
下面是一个关于数组的综合练习例子,设计一个函数,找出整型数组的最小值
// 设计一个函数,找出整型数组元素的最小值 #include <stdio.h> /* * 定义函数需要两个参数,一个是数组,一个是数组长度 */ int minOfArray (int array[], int length) { // 定义一个变量存储最小值(默认是首元素) int min = array[0]; // 遍历所有元素,找出最小值 for(int i = 1; i<length; i++) { if(array[i] < min) // 判断当前元素是否小于min { min = array[i];// 如果当前元素小于min,就用当前元素覆盖min。 } } // 返回最小值 return min; } int main() { // 整型的数组 int ages[] = {43, 12, 103, 69, 76, 25, 16}; int len = sizeof(ages)/sizeof(int); // 计算数组长度 int min = minOfArray(ages, len);// 调用minOfArray函数 printf("最小值是:%d\n", min); // 输出最小值 return 0; }
---恢复内容结束---
时间: 2024-10-26 16:38:20