傳遞資料結構引數和字串引數時,同時傳遞長度

2021-04-09 08:41:34 字數 939 閱讀 8464

再系統呼叫函式中,經常看到這樣的情況:

傳遞結構體和字串引數時,同時傳遞長度。

我們可以在程式中獲得傳入結構體和字串的長度,為什麼還要再傳入乙個長度?

原因在於:當傳入的引數時字串時我們可以輕易的獲得長度,但是這個長度是用sizeof 還是strlen,其值是否有效?

傳入的引數後,不論sizeof還是strlen其長度變為傳輸引數的實際長度,而不再是定義變數時記憶體分配的長度

看下面的例子:

#include

<

stdio.h

>

struct

a...

a;

struct

b...

b;

void

test(

char

*sbuf,

intn)

...

void

tests(

structa *

s,int

n,structb *

r,int

m)...

int

main()

...

執行結果:

struct a s

sizeof=4,n=12

sizeof(int)+sizeof(s.sbuf)=9

sizeof(int)+strlen(s.sbuf)=7

struct b r

sizeof=4,m=10

sizeof(r.str)+sizeof(r.sbuf)=10

strlen(r.str)+strlen(r.sbuf)=6

abcd

n=4sizeof=4,strlen=4

abcd

n=4sizeof=4,strlen=4

abcd

n=5sizeof=4,strlen=4

傳遞字串 Linux Shell 傳遞引數

物聯網開發入門直播課 嵌入式 物聯網 快速上手linux 創客學院直播室 www.makeru.com.cn 嵌入式應用層開發 1小時全面認識linux網路經典案例 創客學院直播室 www.makeru.com.cn 我們可以在執行 shell 指令碼時,向指令碼傳遞引數,指令碼內獲取引數的格式為 ...

mysql儲存過程傳遞字串引數

儲存過程 create procedure pro getuserinfo in szempname varchar 1000 begin declare strsql varchar 1000 set strsql concat insert into tmptable userinfo empn...

使用AFN傳遞json字串引數

一.問題描述 在使用afn的post傳遞引數的時候,需要傳遞2個引數,這兩個引數都是字典型別的,由於afn的post方法的params引數是乙個字典,所以我這麼寫的 建立json資料 nsdictionary p1info nsdictionary p2info nsmutabledictionar...