当前位置:首页 » 编程语言 » c语言指针参数

c语言指针参数

发布时间: 2025-05-06 00:06:07

1. c语言中time参数

在C语言中,time()函数用于获取当前时间。其函数原型为:

time_t time( time_t *time );

这个函数返回一个time_t类型的值,表示当前的时间。如果传递给time()的参数time是一个非空指针,那么函数会将当前时间存储在指向的内存位置。如果传递的参数time为0或NULL,那么函数直接返回当前时间的值,而不会进行任何存储操作。

值得注意的是,这里的time参数类型是time_t *,即一个指针类型。如果你传递的是0或NULL,实际上会被解释为一个空指针,这种情况下time_t *指针无法用于存储当前时间。因此,time()函数的使用规则是:如果参数time为0或NULL,则函数返回值即为当前时间;若参数time不为0或NULL,则当前时间会被存储到参数time指向的内存位置。

总结而言,time()函数是一个方便的时间获取函数,可以灵活地处理返回当前时间或存储当前时间到指定位置的需求。

2. C语言指针变量的赋值和做函数的参数

1、指针变量的赋值,分为定义时赋值(初始化)和单独赋值,如:

intx;
int*px=&x;//定义时赋值,也称初始化,注意这里的*是跟随int的,即变量px是int*类型变量!实际上的赋值语句是px=&x;
int*py;
py=&x;//单独赋值,将py指向x
*py=10;//这里的*,是引用指针中的数据操作符,*跟随的变量必须是指针类型变量,否则会出错!*py就是x,这里相当于x=10;

2、指针变量作为函数的参数时,子函数可以通过指针引用实参地址中的数据,达到修改实参地址中的数据。如:

#include<stdio.h>
voidfunc(inta,intb,int*pmax)
{
if(a>b)*pmax=a;
else*pmax=b;
}
voidmain()
{
inta=2,b=3,max=0;
func(a,b,&max);//这里将变量max的地址传递到子函数,子函数中通过该地址,可以修改max的值,达到子函数结束后,max能带回运算结果的效果。
printf("max=%d ",max);
}

3. C语言编程:从键盘任意输入三个数,编写求其最大值、最小值的函数,用指针作函数参数实现。

程序如下:
#include<stdio.h>
#define MAXSIZE 10
main()

{
int a[MAXSIZE];
int k;
printf("please inter ten number:");
for(k=0;k<MAXSIZE;k++)
{

scanf("%d",&a[k]);
}

Fun(a);
for(k=0;k<MAXSIZE;k++)
printf("%d,",a[k]);

}

void Fun(int a[])

{

int i;
int temp;
int MaxNum=a[0];
int maxIndex = 0;
int minIndex = 0;
int MinNum=a[0];
for(i=0;i<10;i++)

{

if(a[i]>MaxNum)

{

MaxNum=a[i];
maxIndex = i;
}

else if(a[i]<MinNum)
{
MinNum=a[i];
minIndex = i;

}

}
temp = a[maxIndex];
a[maxIndex] = a[minIndex];
a[minIndex] = temp;
}

(3)c语言指针参数扩展阅读:

指针定义格式

类型名 *函数名(函数参数列表);

其中,后缀运算符括号“()”表示这是一个函数,其前缀运算符星号“*”表示此函数为指针型函数,其函数值为指针,即它带回来的值的类型为指针,当调用这个函数后,将得到一个“指向返回值为?的指针(地址),“类型名”表示函数返回的指针指向的类型”。

“(函数参数列表)”中的括号为函数调用运算符,在调用语句中,即使函数不带参数,其参数表的一对括号也不能省略。其示例如下:int *pfun(int, int);由于“*”的优先级低于“()”的优先级,因而pfun首先和后面的“()”结合,也就意味着,pfun是一个函数。即:int *(pfun(int, int));

接着再和前面的“*”结合,说明这个函数的返回值是一个指针。由于前面还有一个int,也就是说,pfun是一个返回值为整型指针的函数。

4. 在c语言中,指针作为函数参数,形参只能传递值,而不能传递地址,是怎么回事

C语言中,函数参数只能传值。与传值对应的是传引用,C语言不支持函数参数传引用,C++语言才支持。
C++传引用函数:
void foo(int& a) { a = 3; }
假如a = 2,执行foo(a)后,a = 3。
---
C语言可以模拟传引用,方法是通过指针来实现:
void foo2(int* ap) { *ap = 3; }
假如a = 2,执行foo2(&a)后,a = 3
foo2(&a)调用本质上仍然是传值,只不过传递的是指针,指针即是地址,地址本质上是一个无符号整数。
如果:
void foo3(int b) { b = 3; }
假如a = 2,执行foo3(a)后,a = 2。这是因为foo3(a)调用过程中,a值传给形参b,修改b的值与实参a无关。
注意到,foo3(a)与上述foo(a)传引用的调用是形式一样的。
既然C语言通过指针可以实现传引用调用,为什么C++还要引入引用这个特性呢?这是因为C++引入的很多新特性需借助引用来实现,比如,拷贝构造函数等等。

5. C语言中 指针做函数参数传递二维数组

#include <stdio.h>

void fun(int (*p1)[3],int (*p2)[3]);

int main()

{

int p1[3][3]={{7,8,9},{4,5,6},{1,2,3}} ;

int p2[3][3] = {0};

int i = 0, j = 0;

fun(p1,p2);

for(i = 0;i < 3;i++){

for(j = 0;j < 3;j++){

printf("%d ",*(*(p2+i)+j));

}

printf(" ");

}

return 0;

}

void fun(int (*p1)[3],int (*p2)[3])

{

int i = 0,j = 0;

for(i = 0;i < 3;i++){

for(j = 0;j < 3;j++){

*(p2[j]+i) = *(p1[i]+j);

}

}

}

(5)c语言指针参数扩展阅读:

函数指针的声明方法为:

返回值类型 ( *指针变量名) ([形参列表]);

其中,“返回值类型”说明函数的返回类型,“(指针变量名 )”中的括号不能省,括号改变了运算符的优先级。若省略整体则成为一个函数说明,说明了一个返回的数据类型是指针的函数,后面的“形参列表”表示指针变量指向的函数所带的参数列表。例如:

int func(int x); /* 声明一个函数 */

int (*f) (int x); /* 声明一个函数指针 */

f=func; /* 将func函数的首地址赋给指针f */

或者使用下面的方法将函数地址赋给函数指针:

f = &func;

赋值时函数func不带括号,也不带参数,由于func代表函数的首地址,因此经过赋值以后,指针f就指向函数func(x)的代码的首地址。

网络-函数指针

热点内容
php类大小写 发布:2025-05-06 04:00:07 浏览:484
小爱音箱需要买什么配置的 发布:2025-05-06 03:49:04 浏览:122
小米如何重置锁屏密码和保存数据 发布:2025-05-06 03:48:16 浏览:780
正则表达式sqlserver 发布:2025-05-06 03:46:47 浏览:426
豆瓣相册上传 发布:2025-05-06 03:35:42 浏览:993
ftp多久可以破掉 发布:2025-05-06 03:35:40 浏览:77
原子c语言 发布:2025-05-06 03:29:09 浏览:889
忘记移动宽带密码怎么办啊 发布:2025-05-06 03:14:10 浏览:485
安卓手机不在通知栏显示怎么回事 发布:2025-05-06 03:14:09 浏览:508
力扣刷算法 发布:2025-05-06 03:08:36 浏览:842