C 传递指针给函数

C 语言允许您传递指针给函数,只需要简单地声明函数参数为指针类型即可。

下面的实例中,我们传递一个无符号的 long 型指针给函数,并在函数内改变这个值:

 1 #include <stdio.h>
 2 #include <time.h>
 3
 4 void getSeconds(unsigned long *par);
 5
 6 int main ()
 7 {
 8    unsigned long sec;
 9
10
11    getSeconds( &sec );
12
13    /* 输出实际值 */
14    printf("Number of seconds: %ld\n", sec );
15
16    return 0;
17 }
18
19 void getSeconds(unsigned long *par)
20 {
21    /* 获取当前的秒数 */
22    *par = time( NULL );
23    return;
24 }

当上面的代码被编译和执行时,它会产生下列结果:

Number of seconds :1294450468

能接受指针作为参数的函数,也能接受数组作为参数,如下所示:

 1 #include <stdio.h>
 2
 3 /* 函数声明 */
 4 double getAverage(int *arr, int size);
 5
 6 int main ()
 7 {
 8    /* 带有 5 个元素的整型数组  */
 9    int balance[5] = {1000, 2, 3, 17, 50};
10    double avg;
11
12    /* 传递一个指向数组的指针作为参数 */
13    avg = getAverage( balance, 5 ) ;
14
15    /* 输出返回值  */
16    printf("Average value is: %f\n", avg );
17
18    return 0;
19 }
20
21 double getAverage(int *arr, int size)
22 {
23   int    i, sum = 0;
24   double avg;
25
26   for (i = 0; i < size; ++i)
27   {
28     sum += arr[i];
29   }
30
31   avg = (double)sum / size;
32
33   return avg;
34 }

当上面的代码被编译和执行时,它会产生下列结果:

Average value is: 214.40000
时间: 2024-12-27 12:05:49

C 传递指针给函数的相关文章

关于传递指针给函数的未解疑问

之前在菜鸟教程复习C++,着重看了一下比较难的指针,其中传递指针给函数这一部分有一些疑惑未解,希望看到的人可以帮忙给个解答. 程序代码如下 #include <iostream> using namespace std; // 函数声明 double getAverage(int *arr, int size); int main () { int balance[5] = {1000, 2, 3, 17, 50}; // 带有 5 个元素的整型数组 double avg; avg = get

无法把指针变量本身传递给一个函数

例1: #include<stdio.h> #include<stdlib.h> void fun(char*p) { char c = p[3];//或者是char c=*(p+3); } int main() { char*p2 = "abcdefg"; fun(p2); system("pause"); return 0; } 错误,因为无法把指针变量本身传递给一个函数 应该对实参做一份拷贝并传递给被调用函数,即对p2做一份拷贝,假设其

向函数中传递指针和传递指针的引用的区别

如果是传递指针,那么会先复制该指针,在函数内部使用的是复制后的指针,这个指针与原来的指针指向相同的地址,如果在函数内部将复制后的指针指向了另外的新的对象,那么不会影响原有的指针:但 是对于传递指针应用,如果将传递进来的指针指向了新的对象,那么原始的指针也就指向了新的对象,这样就会造成内存泄漏,因为原来指针指向的地方已经不能再 引用了,即使没有将传递进来的指针指向新的对象,而是在函数结束的时候释放了指针,那么在函数外部就不能再使用原有的指针了,因为原来的内存已经被释放了 看个例子: #includ

C#委托与C语言函数指针及函数指针数组

C#委托与C语言函数指针及函数指针数组 在使用C#时总会为委托而感到疑惑,但现在总新温习了一遍C语言后,才真正理解的委托. 其实委托就类似于C/C++里的函数指针,在函数传参时传递的是函数指针,在调用的时候通过指针访问这个函数. 在C语言中函数指针的申明如下: //可以理解为申明一个指着变量 Func ,它的类型是 返回Type(可以为 void )类型的参数,接收 (Type one,Type two,...)类型的//参数(可以不接受参数). Type *Func(Type one,Type

嵌入式Linux C语言(三)——指针与函数

嵌入式Linux C语言(三)--指针与函数 指针对函数的功能有巨大的贡献,指针能够将数据传递给函数,并且允许函数对数据进行修改.指针对于函数的作用主要有两方面:将指针传递给函数和声明函数指针. 一.程序的栈和堆 程序的栈和堆是C语言程序运行的运行时元素. 1.程序栈 程序栈是支持函数执行的内存区域,通常和堆共享一块内存区域,通常程序栈占据内存区域的下部,堆用内存区域的上部.程序栈存放栈帧,栈帧存放函数参数和局部变量.调用函数时,函数的栈帧被推倒栈上,栈向上长出一个栈帧,当函数终止时,函数的栈帧

函数指针与函数指针数组的使用方法

转自:http://blog.csdn.net/feitianxuxue/article/details/7300291 函数指针与函数指针数组的使用方法 函数指针: 函数指针包含函数在内存中的地址.数组名实际上就是数组的第一个元素在内存中的地址,类似地,函数名实际上也是执行这个函数任务的代码在内存中的起始地址. 函数指针可以传递给函数.从函数返回.保存在数组中.赋予另一个函数指针或者调用底层函数. 下面我们用数值算法accumulate讨论下函数指针的用法.accumulate是一种常用的ST

彻底搞定C指针-函数名与函数指针【转】

转自:http://blog.csdn.net/a1232345/article/details/43524371 函数名与函数指针 一 通常的函数调用    一个通常的函数调用的例子://自行包含头文件void MyFun(int x);    //此处的申明也可写成:void MyFun( int ); int main(int argc, char* argv[]){   MyFun(10);     //这里是调用MyFun(10);函数 return 0;} void MyFun(in

数组和指针作为函数的参数

数组作为函数的参数 注意:当数组作为函数的实参时,只传递数组的地址,而不是将整个数组赋值到函数中,当用数组名作为实参调用函数时,指向该数组的第一个元素的指针就被传递到了函数中 C语言中没有下标的数组而是一个指向该数组第一个元素的指针 其实说的就是数组第一个元素的地址 如 int count [10];        count 就等同于 *count 都表示count数组 第一个元素的地址 1.数组的元素作为函数的参数 (需要用for循环来对数组中的元素进行遍历 让每一个元素都传入函数中)

关于指针作为函数参数的一点研究

事情大概起源于这样一个问题: #include<stdio.h> void Try_change(int *p) { int b=7; p=&b; } int main() { int *p=NULL; int a=5; p=&a; Try_change(p); printf("%d\n",*p); return 0; } 当我第一次看到这个题目的时候我觉得答案是7,但是又好像是5,模模糊糊,傻傻分不清楚,这也是我想深入探究下这个问题的原因. 如果你一眼知道