二维数组 C语言优先级记忆Tips
来源:互联网 发布:super kamagra 淘宝 编辑:程序博客网 时间:2024/06/05 10:27
引入:
一维数组的定义:
动态创建一维数组 :int * arr=(int * )malloc(10* sizeof(int));
1.二维数组的定义:
如创建3行4列的数组
第一种方法:
int main(){ int count=0; int** arr=(int** arr)malloc(3*sizeof(int*));//开辟二维数组,3行 for(int i=0;i<3;i++) { arr[i]=(int*)malloc(4*sizeof(int));//循环的为每一行分配4列 } for(int i=0;i<3;i++) { for(int j=0;j<4;j++) { arr[i][j]=count++; } }return 0;}
若赋值成功,则表明创建二维数组成功
第二种方法:
int main(){ int (*arr)[4]=(int (*)[4])malloc(3*4*sizeof(int)); //指针变量arr指向包含4个整型元素的一维数组 for(int i=0;i<3;i++) { for(int j=0;j<4;j++) { arr[i][j]=count++; } }return 0;}
因为arr是数组指针,所以定义时容易出错,尤其是括号的使用,此时若用typedef代替二维数组的类型,会简单许多,如
typedef int (*Arr)[4];//Arr为指向数组的指针,每个数组包含4个整型单元Arr arr=(Arr)malloc(3*4*sizeof(int));
2.调用二维数组时的实参与形参的格式
因为我常常在调用二维数组是出现形参与实参的类型不兼容的错误,所以总结了目前所学的几种有关二维数组的调用,日后会不断进行补充。
如 int arr[10][10];
实参为arr时,arr是二维数组,调用的形参应该是指向数组的指针,故形参为int (* arr)[10];或者,形参可以写作int arr[][10];因为第一个长度可以省略。
实参为( int * )arr时,是将指向数组的指针传入形参,将二维数组当做一维数组,或者实参为&arr[10][10]时,是将二维数组的首地址传入形参,此时形参为int* arr
总结如下图所示:
3.C语言优先级记忆口诀
先简单的背两句话:“单算移关与,异或逻条赋”
接下来解释这两句话:
单:单目运算符:逻辑非(!)、按位反(~),自增(++)、自减(- -)、取地址(&)、解引用(*)、正号(+)、负号(-)、sizeof //【结合方向从右至左】
算:算术运算符:*、/、%优先级高于+、-
移:按位左移(<<)、按位右移(>>)
关:关系运算符:大小关系(>、>=、<、<=)高于相等不相等关系(==、!=)
与:按位与(&)
异:按位异或(^)
或:按位或(|)
逻:逻辑运算符:逻辑与(&&)高于逻辑或(||)
条:条件运算符(?:) //【从右至左】
赋:赋值运算符(=、+=、-=、*=、/=、%=、>>=、<<=、&=、^=、|=) //【从右至左】
另,括号成员排第一,即括号运算符() []和 . ->优先级最高
逗号运算符(,)级别最低
注:C语言优先级记忆口诀来源于网络,如侵权即删
- 二维数组 C语言优先级记忆Tips
- C语言运算符优先级记忆
- C语言二维数组
- C语言二维数组
- c 语言 二维数组
- c语言-二维数组
- C语言二维数组
- C语言 二维数组
- C语言 二维数组
- C语言二维数组
- 【C语言】二维数组
- Tips--C语言数组指针
- C语言动态分配二维数组
- c语言传递二维数组
- C语言动态分配二维数组
- C语言--关于二维数组
- C语言之二维数组
- C语言中的二维数组
- 布隆过滤器和Hyperloglog基数统计的介绍
- mark
- C 错误处理
- UGUI_使用DoTween
- DHtmlX中combo的基础使用
- 二维数组 C语言优先级记忆Tips
- Comparable与Comparator的区别
- NameError: name 'FileNotFoundError' is not defined的解决方案
- 牛客网编程题
- 二叉树已知(中序+一序)求另一序
- android 水准仪的实现(方向传感器的使用)
- Android-TextView设置多种颜色及部分点击事件
- 理解js设计模式之代理模式
- Eureka常见问题