c语言初始函数 c语言函数详解

c语言的初始化函数问题

void InitStack(SqStack *S)

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名注册虚拟主机、营销软件、网站建设、梁平网站维护、网站推广。

{

int i;

for(i=0;iN;i++)

S-base[i]=0;

S-top=0;

}

C中函数参数是按值传递,你那样写修改的是复制的副本,本身没有修改,传递指针,间接修改。

其他的函数也一样,都需要传递指针。

如何使用C语言?它有什么函数?如何初始化?

通过C语言撰写程序,最经典的函数是static。

在C语言中,static的作用有三条:一是隐藏功能,二是保持持久性功能,三是默认初始化为0。

在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条,分别是:一是隐藏功能,对于static修饰的函数和全局变量而言。二是保持持久性功能,对于static修饰的局部变量而言。三是因为存放在静态区,全局和局部的static修饰的变量,都默认初始化为0。

如果加了static,就会对其它源文件隐藏。例如在a和msg的定义前加上static,main.c就看不到它们了。利用这一特性可以在不同的文件中定义同名函数和同名变量,而不必担心命名冲突。

Static可以用作函数和变量的前缀,对于函数来讲,static的作用仅限于隐藏。

C语言中初等函数有哪些

基本初等函数

我们最常用的有五种基本初等函数,分别是:指数函数、对数函数、幂函数、三角函数及反三角函数。

关于c语言数据结构中栈的初始化函数传递参数的问题

1、通过函数的参数显示传递:

a(int

a)

{

a

=

a+2;

}

b(void)

{

int

b

=

3;

a(b);

}

在函数a中a作为一个参数传入函数中进行运算,那么a就可以算作是a的输入,然后在程序内部a进行了运算后值变了,那么运算后的a又算作是a函数的输出。

2、通过全局变量隐式传递:

全局变量你应该知道吧,简单点说就是作用域涵盖整个程序的变量(当然要看具体情况)。

假设a为int型全局变量,初始值为1:int

a

=

1;

a()

{

a

=

a

+

2;

}

b()

{

a

=

a

+

3;

}

main()

{

a();

b();

a();

}

通过main函数我们可以看到,程序首先执行的是函数a,那么执行完函数a后全局变量a的值由初始值1变成了3,然后又继续执行函数b,注意此时函数b也是对a进行运算,那么此时全局变量a成了b的输入,运算后a的值为了6,此时a为b的输出。那么也就是说全局变量a在经过a函数的改变后作为一个输入隐式的传入了b函数,然后经过b函数的运算又算作是b的输出。执行过b函数后程序又遇到了a函数,那么此时经过b函数运算的a又作为a函数的一个输入了。

c语言初级函数

对于函数,有两个概念要理解好

那就是实参和形参。

形参是在函数的原型里面的参数值,如下面函数原型

void inc(int a);

a就是形参,如果在使用的时候,给函数传递一个变量,如

int x = 5; //在这里x只是一个变量

inc(x);// 把他递给函数时,他就是函数运行时的一个参数,与a不同的是,x叫做实参,因为参与实际的运算。

而a只是表明一个变量,甚至上面的函数原型可以写为

void inc(int);//a没必要存在。

不过在实现这个函数时,就必须指明形参的名字,毕竟要操作他嘛。

void inc(int a)

{

a = a + 1;

}

上面讲了什么是形参,什么是实参。

形参是在定义函数原型,或者实现函数功能时用的,

而实参是在调用函数时使用的。

调用过程,会把x送给函数inc,但是这种说法很表面,具体说,应该是把x的值的大小送给inc。也就是函数的参数传递是传值的形式

我在main函数里定义了一个变量x,并初始化为5;

int x = 5;

如果调用inc(x),这样的调用不会改变变量x所对应的内存空间里面的数据,

这里用到传值,意思就是只是把x对应的值传给函数,而x对应的内容是不会变的。

要想改变x的内容,必须传递指向x的指针。

上面的函数可以改写成下面这个。

void inc(int *a) //这里的*用于定义a为一个指针,指向int类型

{

(*a) = (*a) + 1; //这里的*含义和上面的不同,表示使用地址a对应的值

}

调用时使用

inc(x);// 是取地址符

这样,就能改变x的值

下面是一个程序可以测试

#include stdio.h

void Inc1(int a);

void Inc2(int *a);

int main()

{

int x = 5;

Inc1(x);

printf("x的值为5,使用传值的函数后,x的值为:%d\n",x);

Inc2(x);

printf("x的值为5,使用传地址的函数后,x的值为:%d\n",x);

return 0;

}

void Inc1(int a)

{

a = a + 1;

}

void Inc2(int *a)

{

*a = *a + 1;

}

解决办法:

上面的函数改写为

void f(int *x, int *y)

{ int t;

if(*x *y) {

t=*x;*x=*y;*y=*t;

}

}

调用时使用

f(a,b);f(a,c);f(b,c); 即可。

不过对于指针的操作要小心,在C++里面使用了另外一种函数实参到形参的技术,叫做引用,可以很方面的实现这个功能,同时避免了指针操作带来的问题。

下面是c++的写法

#include iostream

using namespace std;

void f(int x, int y) //这个时候不是取地址了,而是表示变量的引用

{ int t;

if(xy)

{

t=x;x=y;y=t;

}

}

int main()

{

int a=4,b=3,c=5;

f(a,b);f(a,c);f(b,c);

couta' 'b' 'cendl;

return 0;

}

建议,标准的c或者c++的程序都必须使用如下原型

int main()

{

}

至于要不要使用return关键字,去返回一些结果,看你程序的功能及结构,标准的是可以不return的,但是如果你是在VC环境下编程的话,不return会报错,我只能说微软太TMD。

我都是在linux用gcc的,比较符合标准。

以上程序,都在一个IDE下实现测试过

那个IDE的网址是


新闻标题:c语言初始函数 c语言函数详解
浏览地址:http://scyanting.com/article/hhejjo.html