一维数组
一维数组
1.打印地址用%p;
2.数组的地址是连续的;
3.一个int是4位,4*6=24;
4.对于数组a,直接取地址,为首元素地址;
5.不能对数组重新赋值,例如a=a+1,会报错;
6.C语言数组越界,编译器不会做越界检查,需要注意逻辑;
7.数组a[3]={1,2,3,4},报错;,如果缺少补0,最常用的是a[ ];
打印数组的一些基本知识问题:a[ ]时如何计算数组长度,利用sizeof()函数; 例如:a=sizeof(a)/sizeof(int);
数组数据溢出,产生警告 冒泡排序笔记:1.由小向大排列,故而 i 从小开始;
2.外圈for循环为比较次数,内圈for循环为比较的数;
3.内圈for循环,必须从j=i开始(i+1也可以),因为若从j=0开始,已经赋值的最小值仍来比较,所以只会输出最小值;
4.进行大小排列,必然要引入一个新变量,作为中间变量;
遗留:1.用其他循环的算法完成;
二维数组
二维数组赋值报错
1.二维数组初始化时,只有一维数组的维度可以不用填写,二维数组的维度必须填写;
2.不填写报错如上;
3.二维数组的打印必须用for循环实现
4.二维数组的初始化必须注意格式;
二维数组的字节数打印杨辉三角
分析:1.将10*10全为1打印出来
2.只打印10*10下半部
3.调整复制数据;
第一步第二步 第三步
杨辉三角思考:
1.在第三步,对于i的重新赋值和装填时,内层for循环,必须强行使得 j<=i,因为j=0时,数组无-1,会产生随机数据,导致结果错误;
思考题:3×4矩阵,要求输出其中最大值。以及他的行号和列号
1.比较大小时,因为遍历,所以应该创造出独有的行和列变量;
2.在比较大小程序中,坚决不能对原数组的维度进行重新赋值,负责会陷入思维误区;
2维数组求最大数字符数组
有\0对比-字符串数组笔记:
1.c语言没有字符串常量,都是用字符串数组进行定义;
2.要打印字符串数组,最好的办法是利用for循环进行遍历完成;
3.用 printf 或者 putchar 进行输出,必须添加 \0 结束符号,不然结果如同上图1所示,未加限制的数组会找到 /0 才会截至;
段错误段错误原因:格式输出函数 printf 中%s输出的是字符串。而使用for循环进行遍历,输出的是单个字符,所以输出格式不匹配,导致段错误;
笔记:数组声明必须带维度或者元素。char I[].这样的声明是错误的;
数组逆序逆序输出
数组下标的作用很大;
数组下标逆序用不同方法实现:
网友评论