當前位置:首頁 » 編程語言 » 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)的代碼的首地址。

網路-函數指針

熱點內容
原子c語言 發布:2025-05-06 03:29:09 瀏覽:889
忘記移動寬頻密碼怎麼辦啊 發布:2025-05-06 03:14:10 瀏覽:485
安卓手機不在通知欄顯示怎麼回事 發布:2025-05-06 03:14:09 瀏覽:507
力扣刷演算法 發布:2025-05-06 03:08:36 瀏覽:842
三星c7android70 發布:2025-05-06 03:01:57 瀏覽:487
安卓手游王者怎麼移到蘋果上 發布:2025-05-06 03:01:16 瀏覽:688
用戶腳本目錄 發布:2025-05-06 02:59:44 瀏覽:351
ac搜索演算法 發布:2025-05-06 02:36:06 瀏覽:411
文件鎖linux 發布:2025-05-06 02:28:51 瀏覽:568
秦plusdmi最低配有什麼配置 發布:2025-05-06 02:21:41 瀏覽:921