91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

數組和指針的聯系

發布時間:2020-07-05 12:05:34 來源:網絡 閱讀:505 作者:hat小坤 欄目:編程語言

1.數組的本質是一段連續的內存空間

2.數組的空間大小為

sizeof(array_type)*array_size

3.數組名可看做指向數組第一個元素的常量指針

4.指針是一種特殊的變量,與整數的運算規則為:

p+n;=(unsigned int)p+n*sizeof(*p);

結論:

當指針p指向一個桶類型的數組的元素時;p+1將指向當前元素的下一個元素;p-1將指向當前元素的上一個元素。

5.指針之間只支持減法運算,且必須參與運算的指針類型必須相同

p1-p2;=((unsigned int)p1-(unsigned int)p2)/sizeof(type);

注意:

1.只要當兩個指針指向同一個數組中的元素時,指針相減才有意義,其意義為指針所指元素的下標差

2.當兩個指針指向的元素不在同一個數組中時,結果未定義。


1.指針也可以進行關系運算

2.指針關系運算的前提是同時指向同一個數組中的元素

3.任意兩個指針之間的比較運算(==,!=)無限制

4.以指針形式和數組下標形式訪問數組時,當指針以固定增量在數組中移動時,其效率高于下標產生的代碼

5.當指針增量為1且具有硬件增量模型時,表現更佳。


a和&a的區別

1.a為數組是數組首元素的地址

3.&a為整個數組的地址

3.a和&a的意義不同其區別在于指針運算

a+1;=(unsigned int)a+sizeof(*a)//指向數組的第一個元素
&a+1;=(unsigned int)(&a)+sizeof(*&a)//指向整個數組后的第一個元素

在C語言中,數組作為函數參數時,編譯器將其編譯成對應的指針

void f(int a[]);=;void f(int* a);
void f(int a[5]);=;void f(int* a);

結論:

一般情況下,當定義的函數中有數組參數時,需要定義另外一個參數來標定數組的大小。

#include <stdio.h>

int main()
{
    int a[5] = {1, 2, 3, 4, 5};
    int* p1 = (int*)(&a + 1); //指向數組后的第一個元素
    int* p2 = (int*)((int)a + 1);//指向第一個字節的第一位
    int* p3 = (int*)(a + 1);//指向第一個元素
    
    printf("%d, %d, %d\n", p1[-1], p2[0], p3[1]);
    
    return 0;
}

總結:

1.數組聲明時編譯器自動分配一段連續的內存空間

2.指針聲明時只分配了用于容納指針的4字節空間

3.在作為函數參數時,數組參數和指針參數等價

4.數組名在多數情況下可以看做時常量指針,其值不能改變

5.指針的本質是變量,保存的值被看做內存中的地址

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

开江县| 金堂县| 织金县| 阜平县| 雅安市| 岐山县| 旬阳县| 土默特左旗| 永平县| 兰西县| 顺昌县| 南郑县| 珠海市| 瑞昌市| 中阳县| 静海县| 龙里县| 得荣县| 嵊州市| 辽宁省| 兰州市| 荥经县| 清苑县| 阿拉善右旗| 福海县| 托里县| 吴忠市| 诏安县| 利津县| 公安县| 雅安市| 大足县| 潼南县| 内乡县| 金乡县| 仙桃市| 和龙市| 延边| 临夏市| 栾城县| 遵义市|