1. 程式人生 > >va_arg va_start va_end 獲取函式引數內容

va_arg va_start va_end 獲取函式引數內容

#include <stdio.h>
#include <stdarg.h>

int Ave_int(int,...);


int main()
{
	printf("%d\t",Ave_int(2,"test1","test2"));
	//printf("%d\t",Ave_int(4,6,5,2,3));
	return 0;
}







int Ave_int(int v,...)
{

	char * value_r;

	int i=v;	

	va_list ap;
	va_start(ap,v);
	while(i>0){
		value_r = va_arg(ap,char*);
		printf("value_r is %s\n",value_r);
		i--;
	}
	va_end(ap);
	return 0;
}

相關推薦

va_arg va_start va_end 獲取函式引數內容

#include <stdio.h> #include <stdarg.h> int Ave_int(int,...); int main() { printf("%d\t",Ave_int(2,"test1","test2")); //printf("%d\t",Ave_

Spring AOP動態獲取函式引數中的值

一個簡單的栗子,我們需要記錄一個訂單系統的訂單狀態流轉日誌。為了符合開閉原則,我們只能新加程式碼,隨之引入AOP。AOP的引入是這個功能實現的基礎。接著AOP的作用域是我們要思考的。最方便直觀的當然是註解。所以我們要自定義一個註解。作用於需要記錄日誌的方法上。然後,問題又來了,不通的函式,可能介面引數並不一致

C/C++中用va_start/va_arg/va_end實現可變引數函式的原理

C/C++中用va_start/va_arg/va_end實現可變引數函式的原理與例項詳解         在C/C++中,我們經常會用到可變引數的函式(比如printf/snprintf等),本篇筆記旨在講解編譯器藉助va_start/va_arg/va

編寫一個可變引數的C函式——標頭檔案stdarg.h中巨集va_startva_argva_end的應用

我們在C語言程式設計中會遇到一些引數個數可變的函式,例如printf()這個函式,它的定義是這樣的:int printf( const char* format, ...);它除了有一個引數format固定以外,後面跟的引數的個數和型別是可變的,例如我們可以有以下不同的呼叫方

函式getenv用來獲取引數getenv(的環境變數的內容

配置檔案讀取操作重要流程  1.獲取配置檔案的全路徑  在本文中,配置檔案存放的全路徑為:/home/zhou/zhouzx/GetConfig/ Config.ini。實現獲取配置檔案的全路徑的程式函式為GetCompletePath(具體程式碼見後)。  說明:  ge

va_list 、va_startva_argva_end 使用說明

在ANSI C中,這些巨集的定義位於stdarg.h中: typedef char *va_list; va_start巨集,獲取可變引數列表的第一個引數的地址(list是型別為va_list的指標,param1是可變引數最左邊的引數): #define va_start(list,pa

javascript如何獲取函式名稱和引數方法例項詳解

一、獲取函式名稱的3種實現方法   例項1: 在js權威指南中看到的一個方法: 1 2 3 Function.prototype.getName = function(){     return

深度探索va_startva_argva_end

 採用C語言程式設計的時候,函式中形式引數的數目通常是確定的,在呼叫時要依次給出與形式引數對應的所有實際引數。但在某些情況下希望函式的引數個數可以根據需要確定。典型的例子有大家熟悉的函式printf()、scanf()和系統呼叫execl()等。那麼它們是怎樣實現的呢?  

如何通過AST樹去獲取JS函式引數

寫在最前 最近專案有個需求,獲取函式引數名,聽起來很簡單,但有了ES6,引數和函式寫法千奇百怪,在github上大概看了幾個庫,基本上都是正則,對通用的寫法能夠覆蓋,稍微越過邊界,往往無法正確匹配。 於是就有了使用AST去進行覆蓋查詢的想法。 概念 抽象語法樹(ab

反射獲取建構函式引數,列舉小例子,常量池

getConstructor(String.class,int.class)中的引數是怎麼確定?為什麼就是String.class和int.class,引數型別為什麼又寫成(String.class,int.class)這種形式的呢?知道是通過getConstructor方

獲取建構函式引數

在參加碼農翻身系列課程第三季時,講述spring如何將使用構造器注入引數,這節劉欣老師上完後留下的作業是通過name屬性、index屬性、type屬性嘗試把值注入到物件屬性中,其中name的注入最難解決,因為jdk1.8之前自動將函式引數名給去掉。 Constructor&

linux核心細節-va_argva_endva_start、printf

#define _bnd(X, bnd) (((sizeof (X)) + (bnd)) & (~(bnd))) #define va_arg(ap, T) (*(T *)(((ap) += (_bnd (T,

va_list、va_startva_argva_end巨集的使用(轉)

當你的函式的引數個數不確定時,就可以使用上述巨集進行動態處理,這無疑為你的程式增加了靈活性。 Example: CString AppendString(CString str1,...)//一個連線字串的函式,引數個數可以動態變化{      LPCTSTR str=str

DNS輪詢 PHP獲取遠端網頁內容函式

 PHP獲取遠端網頁內容有多種方式,例如用自帶的file_get_contents、fopen等函式。    <?php  echo file_get_contents("http://blog.s135.com/abc.php");  ?>    但是,在DNS

理解va_list、va_startva_argva_end原理及使用方法

在程式設計中應該注意的問題和解決辦法雖然可以通過在堆疊中遍歷引數列表來讀出所有的可變引數,但是由於不知道可變引數有多少個,什麼時候應該結束遍歷,如果在堆疊中遍歷太多,那麼很可能讀取一些無效的資料.解決辦法:a.可以在第一個起始引數中指定引數個數,那麼就可以在迴圈還中讀取所有的可變引數;b.定義一個結束標記,在

va_list、va_startva_argva_end的原理與使用 (轉)

概述由於在C語言中沒有函式過載,解決不定數目函式引數問題變得比較麻煩;即使採用C++,如果引數個數不能確定,也很難採用函式過載.對這種情況,有些人採用指標引數來解決問題.下面就c語言中處理不定引數數目的問題進行討論. 定義大家先看幾巨集.在VC++6.0的include有

java1.8獲取類和介面函式引數名稱

程式碼如下 package js.oop.parameter; import java.lang.reflect.Method; import java.lang.reflect.Parameter; import java.util.Arrays; /** * j

php利用curl獲取網頁title內容

charset 釋放 tput head func reg 文字編碼 top titles <?php $url = ‘http://www.k7wan.com‘; echo getTitle_web_curl($url); function getTitl

[python]獲取網頁中內容為漢字的字符串的判斷

vsr rbo ats art htm acad for swe lin IPerf%E2%80%94%E2%80%94%E7%BD%91%E7%BB%9C%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7%E4%BB%8B%E7%BB%8D%E4%B

jquery easy-ui 分頁插件的運用(給td添加事件,獲取匯總內容)

gin submit isp columns tag lac summary format put <#include ‘/admin/express-header.html‘ > <div class="main" style=" background: