一級指標,二級指標作為函式輸出形參的正確使用方法

2021-09-03 08:27:20 字數 2279 閱讀 9381

/*data:20181218

/** 一級指標函式輸出形參的正確使用方法:

*1)用於將函式內部的位址拷貝到函式外部已經分配的位址,有兩種做法,參照test_demo_has_no_ininer_static()和test_demo_has_local_var(),經過**對比可以發現test_demo_has_no_ininer_static()更合適

*  二級指標函式輸出形參的正確使用方法:

1)用於將函式內部區域性static變數(程式結束前不會消亡),的位址傳輸出去用的,且傳輸出去的指標位址指向函式內部static變數位址,參考test_demo_has_ininer_static()

* */

#include

#include

#include

using namespace std;

#define max_buf_size 1024

struct sum_input_param

;struct sum_out_param

;struct sum_struct

;int test_demo_has_no_ininer_static(int a,int b);

int test_demo_has_ininer_static(int a,int b);

int test_demo_has_local_var(int a,int b);

int cacu_sum_condition_fun_has_inner_static(int a,int b, sum_out_param **pout_param);

int cacu_sum_condition_fun_has_no_ininer_static(int a,int b, sum_out_param *pout_param);

int cacu_sum_condition_fun_has_local_var(int a,int b, sum_out_param *pout_param);

int main(int argc, char *argv)

int test_demo_has_no_ininer_static(int a,int b)

int cacu_sum_condition_fun_has_inner_static(int a,int b, sum_out_param* *pout_param)

int cacu_sum_condition_fun_has_no_ininer_static(int a,int b, sum_out_param *pout_param)

{sum_out_param *pinner_out_param=pout_param;

char *info=pinner_out_param->buf;

memset(info,0,max_buf_size*sizeof(char));

pinner_out_param->result= a+b;

strcpy(info,"finish sum!\n");

int temp=0;

return 0;

int cacu_sum_condition_fun_has_local_var(int a,int b, sum_out_param *pout_param)

{sum_struct tsum_struct;

sum_input_param input_param;

sum_out_param   out_param;

tsum_struct.pinput_param =   &input_param;//在開始階段就要給指標賦記憶體位址

tsum_struct.pout_param   =   &out_param;//單級指標用於記憶體拷貝,將函式內部的拷貝到外部去

//兩級指標用於將內部staitc拷貝到完那布

sum_out_param *pinner_out_param=(sum_out_param *)tsum_struct.pout_param;

//*pout_param=pinner_out_param;

char *info=pinner_out_param->buf;

memset(info,0,max_buf_size*sizeof(char));

pinner_out_param->result= a+b;

strcpy(info,"finish sum!\n");

int temp2=0;

memcpy(pout_param,pinner_out_param,sizeof(sum_out_param));//將結果拷貝到輸出指標指向的位置

return 0;

一級指標二級指標

例如 int p null int代表指標p指向的資料型別是int型,代表這是乙個指標變數,1 指標變數儲存的內容是指向的變數的位址 2 在使用sizeof判斷指標的位元組數時,在32位機器上為4個位元組,在64位機器上為了相容,仍然是四個位元組大小 3 小知識點,不同型別的指標除了指向的變數資料型...

C (一級指標 二級指標,指標引用)作為函式引數

指標作為函式引數,傳進去的只是乙個拷貝的指標,所以無法通過傳進去的引數在函式內修改函式外面作為引數的該變數。傳變數,傳的是變數的拷貝,在函式裡面修改該引數,改變的只是函式裡面的區域性變數。傳一級指標,傳的是乙個指標的拷貝,在函式修改該指標所儲存的位址 修改指標的指向 修改的也只是區域性變數。但是可以...

一級指標與二級指標

如下圖所示,整型指標xptr指向變數x的位址。原始碼 include int main 實現方法一如下圖所示,先為二級整型指標ptr分配空間,然後賦值。原始碼 include include int main printf n return 0 執行結果 實現方法二 如下圖所示,先為二級整型指標pt...