由於在
c語言中沒有函式過載
,解決不定數目函式引數問題變得比較麻煩
;即使採用
c++,
如果引數個數不能確定
,也很難採用函式過載
.對這種情況
,有些人採用指標引數來解決問題.
uhmm
用到的變參地方:
用的原因:
1,sql
語言必須用常量2,
sql語言格式不相同,引數個數不相同使用a
dyw_mysql(null,"delete from uhmm_userlogin where userid='%s'",user_id); 使用
b dyw_mysql(null,"insertinto uhmm_userinfo
(userid,username,usertype,birth,***,height,mobile,tel,postcode,address,emercontact,emertel,pathography)
values
('%s','%s',%d,'%s','%s',%u,'%s','%s','%s','%s','%s','%s','%s')",
user_mark,name,user_type,calendar,***,height,mobile,local_telepone,post_code,address,emergency_name_contact,emergency_telephpone_contact,path_ography);
a,b使用了同乙個函式,但是引數不同,此為變參函式
-------定義c
語言程式設計中有時會遇到一些引數個數可變的函式,例如
printf()函式,
其函式原型為:
int printf( const char* format, ...);
它除了有乙個引數
format
固定以外
,後面跟的引數的個數和型別是可變的(用三個點「…」做引數佔位符)
,實際呼叫時可以有以下的形式:
printf("%d",i);
printf("%s",s);
printf("the number is %d ,string is:%s", i, s);
包含標頭檔案
#include "stdarg.h"
dyw_mysql
內部的定義如下
gboolean dyw_mysql ( mysql_res **res, const gchar *a1, ...)
C語言變參使用
c語言中有很多變參的使用,例如printf 的原型是int printf const char fmt,那麼c語言是如何解析和處理這些變參的呢?下面進行簡單的總結 c語言中定義了下面的一些巨集,專門用來處理變參 va start va list ap,char fmt va arg va list ...
C語言(變參函式)
c語言雖然沒有c 的函式過載特性,但也可以實現變參,但要保證第乙個引數資訊的完整性。拓展 定義變參函式時,第乙個引數一般是字串,攜帶後續變參的型別和數量資訊,變參使用三點來表示,如 void sumup const char info,再使用va list va start va arg 和va e...
C語言變參使用
c語言中有很多變參的使用,例如printf 的原型是int printf const char fmt,那麼c語言是如何解析和處理這些變參的呢?下面進行簡單的總結 c語言中定義了下面的一些巨集,專門用來處理變參 va start va list ap,char fmt va arg va list ...