重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
指针变量中存储的也是一个值, 比如子函数收到传递来的参数值为:3647829, 可以是数值, 也可以是指针地址, 就看你子函数定义成什么类型的参数
成都创新互联于2013年创立,是专业互联网技术服务公司,拥有项目成都做网站、成都网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元湖北做网站,已为上家服务,为湖北各地企业和个人服务,联系电话:18982081108
两种方法都可以的啊,没有绝对的好坏,要看情况。
全局变量的好处在于,用起来的确很方便,但是用多了会破坏代码的安全性,结构性。非到万不得已,最好不用。(话这么说,好像我还没见过那个稍微大点的程序没有全局变量的。)
传参数的好处么就是,程序比较容易读懂,结构也比较好。但是问题是,如果你的参数很大,比如你每次要传一个很大的结构体,那么就比较容易浪费资源了。传参数不怎么耗时的,关键是看对内存的使用。
所以,如果你不用全局,又想节约资源的传参数,那就只有指针咯。你每次把你的数据的地址当参数传进去,那么,不论你实际的数据有多大,你的参数,仅仅是一个指针,在32位机上,就是永远占4字节的大小。
比如有一个函数bool test(int a, char b),那么在其他地方调用该函数时也要有2个类型相同的参数,假设有int x和char y,那么直接test(x, y)就可以给函数传值。
1、多文件之间,一般很少有单个参数传递,那个交集太大,不容易移植,各个文件之间最好是越独立越好。
2、数据传递,一般是通过函数接口来实现的。就是用另一个C文件中的某一个功能的时候,可以通过include它的头文件,然后直接调用它的接口函数,这样目的就达到了,这样实现的好处就是易于移植。
定义变量的时候,直接等于一个函数返回值即可。
一、在C语言中,定义变量同时,给变量赋值,称为初始化。
二、初始化形式为
TYPE var_name = INIT_VALUE;
其中TYPE为变量类型, var_name为变量名, INIT_VALUE为初始值。
三、要用函数返回值作为初始化,那么只需要把函数调用写在INIT_VALUE区域即可。 示例代码如
#include stdio.h#include time.hint main(){ int cur_time = time(NULL);//以time函数返回值作为cur_time的初始化值。 printf("当前POSIX标准时间为:%d\n",cur_time);//使用cur_time. return 0;}
将数组传递给函数后,数组就会退化为指针
void fun(int x, int pp[], int *n)
void fun(int x, int *pp, int *n)
// 这两种写法是等价的
pp[j++]=j; // 这句写错了
// 要保存到pp里的是能整除的整数,而不是计数器j,如果这么写,那么pp的值肯定是{0,1,2,3,4,5,...}
// 应该改成
pp[j++] = l; // L才是被整除的整数,要保存的是这个
*n=j; // n作为一个指针,负责传出得到的数字的数量,j是计数器,当所有的计算完毕后,j的值自然是这些数字的数量
一维数组的元素作为函数实参,与同类型的简单变量作为实参一样,是单向的值传递,即数组元素的值传给形参,从而形参是改变不影响实参
数组名代表着整个数组的地址,如果一维数组的名字作为函数实参,传递的是整个数组,即形参数组和实参数组完全相同,是存放在同一存储空间的同一个数组。这样形参数组
修改时,实参数组也同时被修改了。形参数组的元素个数可以省略。
#includestdio.h
//数组作为函数参数,可以省略元素个数
//数组作为函数参数,传递是整个数组的地址,修改了函数形参数组元素的值,会影响到外面的实参数组
void change(int array[])
{
printf("array ==%p\n",array);
array[0] = 100;
}
int main()
{
int ages[6] = {10,11,13,15,11,18};
printf("array ==%p\n",ages);
change(ages);
printf("%d\n",ages[0]);
return 0;
}
输出结果为: array ==0x7fff5be26c00
array ==0x7fff5be26c00
100