亚洲免费乱码视频,日韩 欧美 国产 动漫 一区,97在线观看免费视频播国产,中文字幕亚洲图片

      1. <legend id="ppnor"></legend>

      2. 
        
        <sup id="ppnor"><input id="ppnor"></input></sup>
        <s id="ppnor"></s>

        C語言筆記第二章指針的算術(shù)運算

        字號:

        第二章 指針的算術(shù)運算
            指針可以加上或減去一個整數(shù)。指針的這種運算的意義和通常的數(shù)值的加減
            運算的意義是不一樣的。例如:
            例二:
            1。 char a[20];
            2。 int *ptr=a;
            ...
            ...
            3。 ptr++;
            在上例中,指針ptr的類型是int*,它指向的類型是int,它被初始化為指向整
            形變量a。接下來的第3句中,指針ptr被加了1,編譯器是這樣處理的:它把指針
            ptr的值加上了sizeof(int),在32位程序中,是被加上了4。由于地址是用字節(jié)做
            單位的,故ptr所指向的地址由原來的變量a的地址向高地址方向增加了4個字節(jié)。
            由于char類型的長度是一個字節(jié),所以,原來ptr是指向數(shù)組a的第0號單元開始的
            四個字節(jié),此時指向了數(shù)組a中從第4號單元開始的四個字節(jié)。
            我們可以用一個指針和一個循環(huán)來遍歷一個數(shù)組,看例子:
            例三:
            例三:
            int array[20];
            int *ptr=array;
            ...
            //此處略去為整型數(shù)組賦值的代碼。
            ...
            for(i=0;i<20;i++)
            {
            (*ptr)++;
            ptr++;
            }
            這個例子將整型數(shù)組中各個單元的值加1。由于每次循環(huán)都將指針ptr加1,所
            以每次循環(huán)都能訪問數(shù)組的下一個單元。
            再看例子:
            例四:
            1。 char a[20];
            2。 int *ptr=a;
            ...
            ...
            3。 ptr+=5;
            在這個例子中,ptr被加上了5,編譯器是這樣處理的:將指針ptr的值加上5
            乘sizeof(int),在32位程序中就是加上了5乘4=20。由于地址的單位是字節(jié),故
            現(xiàn)在的ptr所指向的地址比起加5后的ptr所指向的地址來說,向高地址方向移動了
            20個字節(jié)。在這個例子中,沒加5前的ptr指向數(shù)組a的第0號單元開始的四個字節(jié)
            ,加5后,ptr已經(jīng)指向了數(shù)組a的合法范圍之外了。雖然這種情況在應(yīng)用上會出問
            題,但在語法上卻是可以的。這也體現(xiàn)出了指針的靈活性。
            如果上例中,ptr是被減去5,那么處理過程大同小異,只不過ptr的值是被減
            去5乘sizeof(int),新的ptr指向的地址將比原來的ptr所指向的地址向低地址方
            向移動了20個字節(jié)。
            總結(jié)一下,一個指針ptrold加上一個整數(shù)n后,結(jié)果是一個新的指針ptrnew,
            ptrnew的類型和ptrold的類型相同,ptrnew所指向的類型和ptrold所指向的類型
            也相同。ptrnew的值將比ptrold的值增加了n乘sizeof(ptrold所指向的類型)個字
            節(jié)。就是說,ptrnew所指向的內(nèi)存區(qū)將比ptrold所指向的內(nèi)存區(qū)向高地址方向移
            動了n乘sizeof(ptrold所指向的類型)個字節(jié)。
            一個指針ptrold減去一個整數(shù)n后,結(jié)果是一個新的指針ptrnew,ptrnew的類
            型和ptrold的類型相同,ptrnew所指向的類型和ptrold所指向的類型也相同。pt
            rnew的值將比ptrold的值減少了n乘sizeof(ptrold所指向的類型)個字節(jié),就是說
            ,ptrnew所指向的內(nèi)存區(qū)將比ptrold所指向的內(nèi)存區(qū)向低地址方向移動了n乘siz
            eof(ptrold所指向的類型)個字節(jié)。