《c语言学习笔记(数组、函数》由会员分享,可在线阅读,更多相关《c语言学习笔记(数组、函数(53页珍藏版)》请在人人文库网上搜索。

1、数组2010-3-29 22:40一维数组的定义和一维数组的引用内存中一串连续的存储单元(变量),叫数组。指针移动和比较只有在一串连续的数组中才有意义。当数组中每个变量只带一个下标时,为一维数组。定义一个一维数组:类型名 数组名【常量表达式】 如:int a8;说明: 定义一个一维整型名为a的数组。方括号中规定此数组有8个元素,(a【0】-a【7】),不存在a【8】这个元素。a数组中每个元素均为整型,且每个元素只能存放整型。每个元素只有一个下标,且第一个元素的下标总为0。c编译程序,为a数组开辟8个连续存储单元。3)在定义数组语句中,可以有多个数组说明符;它们用逗号隔开。例:double a【。

2、22】,v【100】,u【5】,a,b,c; 注:双精度型 每个单元占用8个字节的存储空间。另外,也可以和普通变量一起定义。用逗号分隔开。2010-3-23 10:29 一维数组元素的引用21)引用形式:数组名 【下标表达式】可以是:常量,变量,表达式。如:double x【8】 则 x【0】 x【j】 x【i+k】均合法2)(1)一个数组元素实际上就是一个变量名,代表内存中的一个存储单元。我们可以把数组元素看做一个变量名来处理。(2)一个数组不能整体引用,数组名中存放的是一个地址常量,它代表整个数组的首地址。当学习指针时,引用的变量的地址,就是变量中第一个字节的地址。数组的首地址也是它的第一。

3、个元素的第一个字节的地址,即它的首地址。数组的首地址存放在数组名中。所以说,数组名就代表一个地址。数组名是一个地址值。(3)在引用数组元素时,数组元素下标表达式必须是整数,下标表达式下限为0.系统并不自动检验数组元素下标是否越界,因此编程时要注意。如:double a,b; int c10;a=2.0;b=3.0;则ai; 是不合法的。给数组赋初值时,如果所赋初值少于元素个数时,后面的元素补为0,字符补为0可以通过赋初值来定义一个数组的大小。如:int a=0,0,0,0,0; 相当于:a5=0;一维数组的初始化void main()int i,j,a30;for (i=0,j=1;i=0;i。

4、-)printf(“%d, ”,ai);if (i%10=0) printf(“n”); /*先输出第i=20这个元素,再输入回车。*/getch(); /2010年10月14日14:43:15 上次是怎么做的啊,错了那么多。1一维数组和数组元素的地址1)数组和指针的比较(1)指针变量的地址:指向内存中一个存储单元的第一个字节的地址。数组名的地址值,就是该数组的第一个元素的第一个字节的地址。(2)指针变量有基类型,相当于数组的类型名。(3)指针变量的地址值不可改变,即指针变量指向的存储单元的地址值是固定的,不可改变,如int *p,a;p=&a;则变量a的地址是不可改变的。也不可给数组名的地址。

5、重新赋值。如数组名为a的数组:a=&x;或a+等给数组名重新赋值都是错误的。一旦定义,a永远指向a数组的首地址。(4)虽然不可改变a的内容(地址),但可以对数组名加一个整数的办法,来依次表达该数组中不同元素的地址。如:a 代表 &a【0】数组的首地址,也是a0的地址 /首地址a+1 代表 &a【1】数组元素a1的地址 /在指针中,1代表一个存储单元a+2 代表 &a【2】. /注意:不是a=a+1,而是 a+1例:main()int a10,*p,x,k;for(k=0;k=0)i+;scanf(%d,&ai);return i;arrout(int *a,int n)int i;for(i=。

6、0;i=0)i+;scanf(%d,a+i);return i;int output(int *a,int n)int i;for(i=0;i=0)i+;scanf(%d,a+i);if(aimain()int i,a,b,h,sum=0;for(i=0;i0;i-)for(j=0;jgetdate(int *a,int n)int i;for(i=0;i5) printf(no);main()int a5=1,2,3,4,5,n=6;fun(a,n);getch();二看视频后模仿做的int getin(int *a)int i,n;doprintf(please input 1 and 3。

7、0);for(i=0;i=n) p=-1;else p=i;return p;main()int a30,x,n,p;n=getin(a);scanf(%d,&x);p=fun(a,x,n);if(p!=-1) printf(x=%d,p=%dn,x,p);else printf(NO);getch();2010年10月19日22:36:38 自己又做了一遍,和金文老师的程序比起来,还是差了不少啊。int arrout(int *a,int n)int i;for(i=0;i=n) printf(NO);int main()int n,x,a5=1,2,3,4,5;arrout(a,5);sc。

8、anf(%d,&x);search(a,x,5);getch();函数之间对一维数组和一维数组的元素的引用及一维数组实例8 2010 4.10w数组中存放着n个数据,编写函数实现删除下标为k的元素中的值arrout(int *a,int n)int i;for(i=0;i30);return i;int arrdel(int *a,int n,int m)int i;for(i=n;i30);return i;int arrin(int *a,int n)int i;for(i=0;ivoid arrout(int *a,int n)int i;for(i=0;ivoid arrout(int。

9、 *a,int n)int i;for(i=0;in;i+)printf(%d,ai);printf(n);search(int *a)int i,j,temp,p,m=0,n=0;for(j=0;j4;j+)p=j;for(i=j+1;i5;i+)if(aiap) p=i;if(p!=j) /*如果当前值不等于最小值时,才交换*/temp=ai;ai=aj;aj=temp;m+; /*此处错了,应该是:temp=aj;aj=ap;ap=temp;*/n+;printf(xun huan ci shu: %dn,n);printf(jiao huan ci shu: %dn,m);void m。

10、ain()int a5=8,1,1,1,8;arrout(a,5);search(a);arrout(a,5);getch();/*此程序不对,但我又是半年没有接触C语言了,所以生疏了,还没看出错误2010.9.24晚11:40。*/2010年10月21日22:04:46 从昨天晚上,到今天晚上整整24小时,包括白天,上课之余都在想,实验这个“选择排序法”,今晚上终于成功了,明白了。上面的程序为什么不对也搞清楚了。O(_)O。(算法的核心是:找一个中间的变量,记住最大的或最小的元素,当比完一轮后,在外层循环将这个最大的或最小的数和每一轮的最前面一个数交换。它相比冒泡排序,交换的次数少了。选择排。

11、序是一个不稳定的排序算法?,还要在学习,还有什么“程序的复杂性分析.等等也是要学习”)#include stdio.hint main()int a10;arrin(a,10);arrout(a,10);paixu(a,10);printf(paixu jieshu,zhunbei shuchu.n);arrout(a,10);getch();int arrin(int *a,int n)int i;srand(unsigned)time(NULL);for(i=0;in;i+)ai=rand()%10;arrout(int *a,int n)int i;for(i=0;in;i+)print。

12、f(%d ,ai);printf(n);paixu(int *a,int n)int i,j,k,t;for(i=0;in-1;i+)k=i;for(j=i+1;jn;j+)if(ajak) k=j;if(k!=i) t=ak;ak=ai;ai=t;、!、 2010年10月27日22:30:16学完了一维数组了,进度还是太慢,学完了还想多做几道习题。可翻开谭老头的书,却是一维数组和二维数组混编的题目,从网上找了个什么“猴子大王”的什么题,也没有头绪,是纯算法的题啊,所以,先放放。不过,我做了一个用筛法求素数的程序,一开始做不出,是参考了谭老头的书后,学会的。(源程序以后补吧,明天打乒乓球,得准。

13、备准备)从上周五开始和李继勇修理学校的微机,一直也没空学习,打乱了学习计划和进度了。得抓紧时间学习。加油!2010年11月1日23:51:45筛法求素数:main()int a100;getarr(a,100);arrout(a,100);sushu(a,100);getch();getarr(int *a,int n)int i;for(i=1;i=n;i+)ai=i;arrout(int *a,int n)int i;for(i=1;i=n;i+)printf(%d ,ai);printf(n);sushu(int *a,int n)int i,j,k;for(i=2;in;i+)for(。

14、j=i+1;jn;j+)if(aj!=0&ai!=0)if(aj%ai=0)aj=0;for(k=2;kn;k+)if(ak!=0)printf(%d,ak);二维数组二维数组的第一节:二维数组的定义和引用 资料没保存丢失了。. 10.9.262010年10月27日22:44:02二维数组在内存中是一一串连续的存储单元的方式保存的。第二节:二维数组的初始化int a34= 1,2,3,4, 5,6,7,8, 9,10,11,12 ; 注:可看成3个连续的一维数组,每个数组有4个元素。每一行的花括号也可以省略不写。行缺省,或列缺省都补零。一维数组可以省略数组的大小:如:int a=1,2,3,4。

15、;二维数组则不可以都省略行和列,只可以省略行下标,列下标是不能省略的。数组元素的个数不可以是变量。如:int x,y; int ax+y; 这样是不合法的。第m行n列可以写成:am-1 n-1;二维数组的遍历:二维数组是一个矩阵。遍历二维数组:main()int i,j,a34;for(i=0;i3;i+)for(j=0;j4;j+)scanf(%d,&aij);for(i=0;i3;i+)for(j=0;j4;j+)printf(%d,aij);printf(n);getch();二维数组和指针以及二维数组程序举例:2010.9.26二维数组名和指针:数组名存放的是内存中该二维数组的首地址,。

16、即&a00若 指针p=a;即p=&a00.二维数组中元素的表示方法:ai j(*(a+i) j*(ai+j)*(*(a+i)+j)*(a+j*i+j)9.29指针数组和行指针2010年10月3日15:16:16指针数组:定义一个一维数组,数组中的每一个元素都是一个整形指针变量。如:定义一个整形的数组:int a3 2 ; 则对应的指针数组为:*q 3; 它和整形数组的行下标相同。指向二维数组每一行的开头,也可以说,指针数组中的每一个元素存放每一行的首地址。则:p0 存放a00的地址 p1存放 a10的地址 p2存放 a20的地址赋值方法:(双for循环)for(i=0;i3;i+) pi=ai。

17、;指针数组引用数组元素:aij 等价于 pij*(ai+j); 等价于 *(pi+j)因为pi 等价于 *(p+i) 所以*(pi+j) 等价于*(*(p+i)+j)pij 等价于 (*(p+i) j 行指针:定义一个指针变量q,它指向一个包含2个整形元素的数组。行指针赋初值:若q=a; 则q+1 等价于 a+1;等价于 a1;如: int a3 2, (*q)2; 注意定义行指针的格式。括号不能少,元素个数和整形数组的列下标是相同的。指针数组移动一次,是移动一个单位,即移动一个元素的位置。行指针的单位是一个数组,所以它移动一次是移动一个数组的位置。它的移动是以行为单位。行指针引用数组元素:因。

18、为q=a;所以a的引用方法均适用于q(最后一项除外)两者的基类型不同:行指针的基类型是 数组 ,指针数组的基类型和原数组的类型相同。. /要再看,再学习二维数组名和指针数组做实参二维数组名做实参时,形参一定是指针,并且这个指针应指向数组,指向数组的指针变量为行指针。形参对应格式,即行指针。应为:1.(*a)N /数组的列2. 行指针也可以表示成数组的形式,即 aMN;3. 行的表达式可缺省aN指针数组做实参:由于指针数组是一个数组,而且她中的每个元素都是指针,因此当指针数组做实参时,她对应的形参必须是指向她的指针。即对应的形参,必然是一个指向指针的指针。即 1*a;2与指针数组表示方式相同 *aM;3缺省 *a;。

c语言中void arrout,c语言学习笔记(数组、函数相关推荐

  1. Go语言学习笔记-数组、切片、map

    Go语言学习笔记-数组.切片.map 数组:同一数据类型元素的集合.是值类型,长度固定无法修改 声明格式:var 数组名字 [元素数量] 数据类型 var arr [3] int //声明定义了一个长 ...

  2. c语言中void指针,C 语言 void指针

    C 语言 void指针 到目前为止,我们已经研究了分配给指针的地址应该与指针声明中指定的类型相同. 例如,如果我们声明了int指针,则此int指针不能指向float变量或某种其他类型的变量,即它只能指 ...

  3. C语言学习笔记---浮点函数modf()和fmod()

      modf函数可以提取出浮点数的整数部分和小数部分.fmod函数可以返回两个浮点数相除的余数.它们的函数原型如下: double __cdecl modf(double _X,double *_Y) ...

  4. C语言学习笔记--数组指针和指针数组

    C 语言中的数组有自己特定的类型,数组的类型由元素类型和数组大小共同决定.(如 int array[5]类型为 int[5]) 1.定义数组类型 C 语言中通过 typedef 为数组类型重命名:ty ...

  5. c语言中void f1(),c语言常见笔试题f1ryiedy.doc

    c语言常见笔试题f1ryiedy c语言常见笔试题总结 [1 使用宏] 1.1 #ifdef NDEBUG #define TRACE(S) S #else #define TRACE(S) prin ...

  6. C语言学习笔记-7.函数

    一.函数的使用 1.每个函数在使用之前必须先定义 例:void function();       //有分号 int main() {-} void add() {-}       //无分号 2. ...

  7. C语言学习笔记---断言函数assert()

      在C语言库函数中提供了一个辅助调试程序的小型库,它是由assert()宏组成,接收一个整形表达式作为参数.如果表达式的值为假(非零),则assert()宏就在标准错误流(stderr)中写入一条错 ...

  8. C语言学习笔记---指向函数的指针

      在内存中函数的存放也是一段连续的内存,函数名就是指向改内存中的首地址,所以也可以将这个函数的首地址赋给一个指针变量,这样通过指针变量就可以访问改函数.   那么为什么要通过指针来访问函数呢?下面通 ...

  9. C语言学习笔记--数组参数和指针参数

    1. 数组参数退化为指针的意义 (1)C 语言中只会以值拷贝的方式传递参数,当向函数传递数组时,将整个数组拷贝一份传入函数导致执行效率低下,C 语言以高效作是最初的设计目标,所以这种方法是不可取的. ...

最新文章

  1. Nginx if 条件判断
  2. vhdl变量赋初值_1.6 C++变量
  3. js reduce实现中间件_MapReduce 模型
  4. linux脚本计算器加减乘除,用shell写一个简易计算器,可以实现加、减、乘、除运算,假如脚本名字为1.sh,执行示例:./1....
  5. wex5中win8或者win10操作系统studio中新建.w向导或其他的编辑窗口显示不全
  6. mysql 与 redis 如何保证数据一致性问题 ?
  7. 重造车轮—基于JQ的商品展示放大镜
  8. 每天10个Linux命令四
  9. 最新手机号段 归属地数据库(20191210,共439265条,包括最新的号段)
  10. office2020与2016版的不同_Office哪个版本最好用?Office 2007/2010/2013/2016/2019/2020怎么选?...
  11. matlab车牌匹配时读取,基于matlab+模板匹配的车牌识别(程序+照片+论文)
  12. java mina框架_Mina框架在项目中的使用(一)
  13. 电子邮件是qq邮箱吗
  14. 电子计算机的字母是什么意思,计算器上的英文字母
  15. 免费的云数据库平台Planetscale
  16. ES7210四通道ADC芯片电路PCB-LAYOUT注意
  17. 利用CNN进行句子分类的敏感性分析
  18. ecshop支持mysql_ecshop安装不支持MySQL
  19. 那些不起眼的流量大户在做什么?(转载)
  20. level升级打怪是什么意思_工业平板电脑的常规升级是什么意思?以液晶屏来说明...

热门文章

  1. h5配合css和js如何自定义单选框
  2. springfox源码_Spring boot整合Springfox在线生成restful的api doc
  3. django html 模板继承,Django模板的继承
  4. XenApp_XenDesktop_7.6实战篇之十六:安装Virtual Delivery Agent For Windows Server OS
  5. 《趣学CCNA——路由与交换》一2.3 网络层协议概述
  6. Intellij IDEA 新建一个EJB工程(三)
  7. JUnit简单使用教程
  8. Blueprint:一个Flash Builder代码示例的扩展
  9. list python 转tensor_Tensorflow模型量化4 --pb转tflite(uint8量化)小结
  10. Activiti源码 ProcessEngineConfiguration