【C 语言】指针间接赋值 ( 指针作为 函数参数 的意义 | 间接赋值 代码示例 )
文章目錄
- 一、指針作為 函數(shù)參數(shù) ( 間接賦值 ) 的意義
- 二、間接賦值 代碼示例
一、指針作為 函數(shù)參數(shù) ( 間接賦值 ) 的意義
調(diào)用函數(shù)時(shí) , 調(diào)用 & 取地址 生成 實(shí)參 p , 將 指針變量 p 實(shí)參 傳遞給 函數(shù)形參 , 在函數(shù)中 借助傳入的 指針 可以 實(shí)現(xiàn) 與 外部函數(shù) 的內(nèi)存共享 , 在函數(shù)中使用 *p 修改內(nèi)存值 , 可以將 運(yùn)算結(jié)果通過(guò) *p 傳遞出來(lái) ;
指針 作為 函數(shù)參數(shù) , 可以實(shí)現(xiàn) 主函數(shù) 與 被調(diào)用子函數(shù) 之間 內(nèi)存交換 ;
下面是邏輯鏈 : 指針作函數(shù)參數(shù) ( 間接賦值 ) -> 接口封裝與設(shè)計(jì) -> 模塊劃分 -> 軟件分層
正是因?yàn)橛辛?間接賦值 , 才能實(shí)現(xiàn) 接口封裝與設(shè)計(jì) , 進(jìn)而實(shí)現(xiàn)了 模塊劃分 , 最后實(shí)現(xiàn)了 軟件分層 ;
使用 指針 ( 一級(jí)指針 或 多級(jí)指針 ) 作為參數(shù) , 可以更加靈活的在 函數(shù)中 對(duì) 傳入的 指針 指向的內(nèi)存數(shù)據(jù) 進(jìn)行處理 , 這些修改 , 可以保留到函數(shù)值返回之后 , 這些參數(shù)都可以作為返回值使用 ;
使用 指針 ( 一級(jí)指針 或 多級(jí)指針 ) 作為參數(shù) , 實(shí)現(xiàn)了 main 函數(shù) , 與 其它 子函數(shù) 之間的 解耦操作 , 實(shí)現(xiàn)了 模塊化開(kāi)發(fā) ;
如果沒(méi)有 指針 作為函數(shù) , 就無(wú)法實(shí)現(xiàn) 功能分層 , 無(wú)法實(shí)現(xiàn) 模塊化開(kāi)發(fā) , 就無(wú)法實(shí)現(xiàn) 接口 封裝 與 設(shè)計(jì) ;
二、間接賦值 代碼示例
代碼示例 :
#include <stdio.h> #include <stdlib.h> #include <string.h>/** 函數(shù)中簡(jiǎn)介修改指針值, 生成字符串*/ void generate_string(char **p, int *len) {// 堆內(nèi)存 創(chuàng)建字符串*p = (char *)malloc(20);// 向堆內(nèi)存 拷貝字符串?dāng)?shù)據(jù)strcpy(*p, "123456");// 設(shè)置字符串長(zhǎng)度*len = strlen(*p); }int main() {// 存儲(chǔ)字符串長(zhǎng)度int len = 0;// 聲明指針變量 , 并為其設(shè)置 NULL 初始值// NULL 就是 0char *p = NULL;// 在子函數(shù)中生成字符串generate_string(&p, &len);// 打印在子函數(shù)中生成的字符串printf("%s\n", p);// 命令行不要退出system("pause");return 0; }執(zhí)行結(jié)果 :
總結(jié)
以上是生活随笔為你收集整理的【C 语言】指针间接赋值 ( 指针作为 函数参数 的意义 | 间接赋值 代码示例 )的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【C 语言】指针间接赋值 ( 直接修改
- 下一篇: 【C 语言】指针间接赋值 ( 间接赋值三