国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

php7源碼閱讀(3)--string函數(shù)閱讀

xingpingz / 3519人閱讀

摘要:在中是常用的類型,今天就開始閱讀他的函數(shù),本人小菜,有什么錯誤的地方望大神指點。首先的函數(shù)定義在文件中,這里我看的版本是。

在php中String是常用的類型,今天就開始閱讀他的函數(shù),本人小菜,有什么錯誤的地方望大神指點。

首先string的函數(shù)定義在/ext/standard/string.c文件中,這里我看的php版本是php7.1.2。

首先在對于php源碼中的函數(shù),定義方法都是PHP_FUNCTION(方法名稱)

源碼:

strtolower和strtoupper

這兩個函數(shù)的源碼相對比較簡單,但是在文件中既出現(xiàn)
PHPAPI char *php_strtoupper(char *s, size_t len)
又出現(xiàn)了
PHPAPI zend_string *php_string_toupper(zend_string *s)
他們代碼的主要算法是一樣的,但是在定于strtoupper方法處是這樣寫的
    PHP_FUNCTION(strtoupper)
    {
        zend_string *arg;
    
        ZEND_PARSE_PARAMETERS_START(1, 1)
            Z_PARAM_STR(arg)
        ZEND_PARSE_PARAMETERS_END();
    
        RETURN_STR(php_string_toupper(arg));
    }
所以函數(shù)應該是php_string_toupper,至于php_strtoupper,由檢索得這個函數(shù)可能是為內(nèi)部一些方法提供的接口

PHPAPI zend_string *php_string_toupper(zend_string *s)
{
    unsigned char *c, *e; //c是字符串的起始位置,e是字符串的結束位置

    c = (unsigned char *)ZSTR_VAL(s);  //返回zeng_tring類型中數(shù)據(jù)部分val的值,也就是字符串的首地址

    e = c + ZSTR_LEN(s);  //因為是e定義的是指針類型,所以e的地址就是字符串的首地址+字符串長度,也就是"