函数的作用就相当于一台机器,这种机器的作用各不相同。不同的函数能完成不同的特定的功能。就像你放玉米进去,它出来的是爆米花一样。它就对玉米进行处理了。而c语言的函数就是你放入数据,它就会对数据进行处理。
西藏ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18980820575(备注:SSL证书合作)期待与您的合作!
数组的作用就是存储数据的作用。是存储数据的类型的一种。计算机处理的就是数据。存储数据,你说重要不?就像电脑没有内存,它怎么运行啊?
1、数组传递给函数,模拟传引用调用的方式自动把数组传递给函数,意味着被调用的函数能够修改原是数组的元素值,
e.g.int
hourly[24];//数组定义
void modify(int [],int
);//函数原型
modify(hourly,24);//函数调用,数组名即数组第一个元素的地址
注意:为了防止函数中修改数组的值,采用类型限定符const做前缀,数组元素成为函数体中的常量,函数体中任何修改数组元素的企图都会导致编译错误,
e.g.void modify(const int [],int);
2、字符数组
字符串读取:scanf("%s",string1);//不用地址符号,因为数组名是数组的起始地址
字符串显示:printf("%s",string1);
e.g.char string1[]="good
girl";//字符串
charstring1[]={'g','o','o','d','\0','g','i','r','l','\0'};//上下声明等价
注意:'空字符'='\0',终止符,用printf("%s",string1)输出,得到good girl。
3、多维数组
e.g.int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
假设数组起始地址2000,则
表示形式含义地址
a指向a[0],即0行首地址。2000
a[0],*(a+0),*a第0行第0列元素地址2000
a+1,a[1]第1行首地址2008
a[1],*(a+1)第1行第0列元素地址2008
a[1]+2,*(a+1)+2,a[1][2]第1行第2列元素地址2012
*(a[1]+2),*(*(a+1)+2),a[1][2]第1行第2列元素的值7
在二维数组中,a+i=a[i]=*(a+i)=a[i]=a[i][0],即他们的的地址值是想等的。
数组元素不能做形参,这个论述是正确的。
我们都知道,单个元素可以做形参,数组也可以做形参。但是,二者有本质上的区别。
单个元素做形参,是建立一个变量副本,程序运行时,实参把值传给副本,就没有实参的什么事了,后面对副本的赋值、改写,都不会影响实参。
而数组做形参时,只是把实参的首地址传给形参,后面对形参的元素的赋值和改写,直接对实参的数组元素进行了赋值和改写。
在C语言中,array[10]有两种含义:
①它指含有10个元素的数组array,如:
int array[10];
②它指数组array的第10号元素,如:
array[10] =5;
因此,对于使用数组array[10](这里,你要把array[10]理解成含有10个元素的数组array,而不能理解成第10号元素)做形参,只写array[]即可(只写一个空的中括号)。
但是,数组做形参时,C语言支持中括号里面写入数字,如array[0]、array[1]或array[10]等,但它们都是一样的,作用与写成array[]完全相同。
就是说,数组做形参时,你可以无视中括号内的数字(程序运行时,也不管中括号内的数字)。
所以,定义函数语句:
float average( float array[10])
与写成:
float average(float array[])
完全相同。
补充一点,数组形参的中括号内写上一个10,也有一个好处,它提醒编程人员这里需要一个含有10个元素的数组!但千万不要理解成数组的第10号元素做形参。
OK?
数组:想放一大堆数字的时候就会有用了。 想放一长串字母的时候同理。 想放多少,定义得比它大就行了。 函数:在C语言中函数是非常重要的环节。 当然你可以把所有代码全部都写在一起,那样除了你自己没人能看懂了,但是假如我写了一个程序,主函数里面只有几个小函数,而且从名字就知道它是做什么的,那样就一目了然了。函数的目的就是把要做的事情分成一个一个的小组。 对于自己写代码嘛。。。 适量的课后练习题足够了,选对自己不太简单也不太难的,边做边回忆课文中所讲到的编程思想,能起到加深记忆的作用。当然如果你记忆超群能记住所有用法,那么你的重点就是自己思考应该怎么把你所掌握的知识点运用到实际中去,在做题的时候多想一想,我用哪个方法比较巧妙?多想想,自己的技巧就在不知不觉中提高了。 个人看法,希望能对你有所帮助。
一 ,s为数组s[]的数组名,他指向s[0],k = arrin(s) 是指 函数arrin的返回值赋给k;int *a是指 定义了一个指向 整型变量 的指针a,他向函数内部传递s所带的信息
二,那是宏定义,让M的值为100
三,M能变,他影响数组s的长度
我说的不一定标准,这是我的理解……
完事儿请采纳,有事请追问