C语言理解二维数组

数组:今日讲解二维数组
数组和指针是c语言的重中之重
一位数组,数组名代表数组的首地址
Int a[5]:int5的字节,bug百分之八十来自于内存,存放相同类型的内容。
我们最多可以说指针模仿数组
多维数组
C语言将多维数组的访问变成了多次对一位数组的访问
一位数组平方,二位数组楼房
Int b[2][3]={{0,1,2},{3,4,5}};2列,3行
b[0]+1
sizeof(int)
b是由两个大元素所构成的一维数组,元素是int[3]型
访问方法用for的方法,
C语言只能处理一维数组,二维数组的初始化,二维数组也可以在定义时对指定元素赋初值,也可以用一下方法对二维数组进行初始化:
全局变量是0
写在main中,进到栈空间,就是垃圾值
1.
2.a[3][4]={1,2,3,4,5,6,7,8,9}将所有元素初值放在一个大括号内
3.int a[3][4]={{1},{5,6},{9}};
4.a[][4]={1,2,3,4,5,6,7,8,9,10};
((a+2)) a[2][0]第二行第0个元素,有确切值
*(a+2) a[2]第二行第0列元素的的地址,首地址
a+2 a[][] a是数组的首地址,地址偏移了两个大元素,依旧是地址 a[2][0]
int a[4][5];
1.可视为一个二维数组。
2.可视为由四个一维数组元素组成的一位数组

再谈数组类型
对于“大元素”,“类型嵌套”还可以这样理解:typedef int D[10];
D A;//就相当于int A[10]
D B[5];//就相当于int B[5][10];
经typedef 类型
不要以为函数尚未调用时,数组就没分配空间
代码区,栈区,堆区,静态区;
Void user(int m,int n)
{
Char A[m][n];
。。。。。。。。。。
}
错误展示
当数组作为函数的参数进行传递时,该数组自动退化为指针

#define NUM 10//多用宏定义
数组名是常地址,是不可变的
掌握数据类型,学会从多个世家访问多维数组
练习1:杨辉三角形特点是每个元素都等于它正上方与左上方数之和,于是可以计算出除第一列,第一行外的所有元素(打印10行即可)。
#include <stdio.h>

#define NUM 10
int main()
{
int a[NUM][NUM];
int i=0;
int j=0;
int count=1;
for(i=0;i<NUM;i++)
{
for(j=0;j<=i;j++)
{
a[i][0]=1;
a[i][i]=1;
if(i>=2&&j>=1&&j<i)
{
a[i][j]=a[i-1][j-1]+a[i-1][j];

			}
		printf("%5d",a[i][j]);
		count++;
	}
	printf("\n");
}
scanf("%d",&i);

}

函数
函数定义,声明
函数的使用可以省去重复的代码编写。
即使某个功能在程序中只是用一次,将其以函数形势实现也是有必要的,因为函数使得程序更加模块化,有利于程序的阅读,修改,完善。有利于程序的模块化设计(多人分工)
用户角度:函数库,用户自定义函数
函数形势角度:无参函数
有参函数:参数个数固定
参数个数不固定
函数名 函数返回值类型 形参,函数体
返回值类型 函数名 (形参列表)
{
函数体;
}
形参:定义函数或者声明函数使函数名后面括号中的变量成为“形参”。
定义时形参名字可以省略吗?
声明可以省略,定义时不可以省略
声明也叫原型告诉编译器函数的参数数量,每一个参数的类型以及返回值的类型。
int count (int a;int b);
a,b可以省略。返回值类型 函数名( 形参列表);
函数调用的一般形式为;
函数名(实参列表);

函数的返回
如果返回值是地址,则需要引起足够的警惕:
1.形参.局部变量地址?
2.是由函数malloc产生的首地址 //堆空间
3.全局变量.静态变量的地址

1.没有意义,函数已经退栈
2.追踪何时释放
3.受静态变量的作用域的影响
Typedef float(*FUN)(int);//函数指针类型
FUN fp;//函数指针变量fp,可以指向具有同一函数类型的函数

float fun

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式吴彦祖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值