中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

指針與數(shù)組的緣定今生

在講指針時(shí),我先講講我使用的編譯器gcc。我是比較喜歡在linux上寫C語言的。

gcc最基本的用法:
                -c:只編譯,不鏈接成可執(zhí)行文件編譯器只是由出入的.c等源代碼文件生成.o為后綴的目標(biāo)文件,通常用于編譯不包含主程序的之程序文件
                -o:確定輸出文件的名稱為out_filename,同時(shí)這個(gè)名稱不能和源文件同名,如果不給這個(gè)選項(xiàng),gcc就要給出預(yù)設(shè)的可執(zhí)行文件a.out
                -g:產(chǎn)生符號(hào)調(diào)試工具(GNU的gdb)所必要的符號(hào)資訊,要想對(duì)源代碼進(jìn)行調(diào)試,我們必須加入這個(gè)選項(xiàng)
                -O:對(duì)程序進(jìn)行優(yōu)化編譯,連接,采用這個(gè)選項(xiàng),整個(gè)代碼源會(huì)在編譯,連接過程中進(jìn)行優(yōu)化處理,這樣產(chǎn)生可執(zhí)行文件的執(zhí)行效率可以提高,但是,編譯連接的速度就相對(duì)慢一些
                -O2:比-O更好優(yōu)化編譯,連接,當(dāng)然整個(gè)編譯,連接過程會(huì)變得更慢
                -l  dirname:將dirname所指出的目錄加入到程序文件頭文件列表中,實(shí)在預(yù)處理編譯過程中使用的參數(shù)/usr/include
                -L dirname:將dirname所指出的目錄加入到程序函數(shù)檔案庫(kù)文件的目錄列表中,時(shí)在鏈接過程中使用的參數(shù)
                -Wall:打開所有的語法檢測(cè)錯(cuò)誤,一般使用這個(gè)

#include<stdio.h>與#include"stdio.h"區(qū)別
    " ":    用戶的自定義的頭文件一般使用" ",陷在當(dāng)前編譯目錄或用戶指定的目錄著頭文件,找不到在到系統(tǒng)指定的文件夾找頭文件/usr/include
  < >:系統(tǒng)文件,一般使用<>直接去系統(tǒng)指定的文件夾找頭文件/usr/include

    **指針** (以下是純屬個(gè)人對(duì)指針的理解和見解,若有錯(cuò)誤請(qǐng)勿當(dāng)真)
    概念:地址,內(nèi)部存儲(chǔ)器的編號(hào),稱為地址。入變量int a的位置編號(hào),變量char  b的位置都是指針。
    指針變量:專門存放地址的變量稱為指針變量
    地址。指針,指針變量都成為指針

    定義變量:
    1.格式[存儲(chǔ)類型]    數(shù)據(jù)類型   指針變量名
    存儲(chǔ)類型:就是說變量放在內(nèi)存的位置
    數(shù)據(jù)類型:聲明這個(gè)空間的大小,和地址類型
    變量名:類似匯編的助記符+存放地址 相當(dāng)于* 0x0xxxxxx0(表示地址)

    用type來表示基本類型
    例如 定義了一個(gè)type  a;那么a的類型是什么呢? a的類型就是 type 和空格
    在舉例 type  arr[10];  arr的類型為type [10]; 
    問題來了a的地址呢 是什么類型呢
    答案就是 int *  0X0xxxxxxx ;這個(gè)地址類型存儲(chǔ)大小是幾個(gè)字節(jié)呢,這要根據(jù)我們的操作系統(tǒng),如果你的操作系統(tǒng)是32為那么他的地址存儲(chǔ)大小是4個(gè)字節(jié),64位就是8個(gè)字節(jié)。

    定義一個(gè)地址變量 
    格式
      1.存儲(chǔ)類型   數(shù)據(jù)類型   *指針變量名
      int i,j;
        int *pointer1, *pointer2;
        存儲(chǔ)類型為這個(gè)地址變量的存儲(chǔ)位置,數(shù)據(jù)類型的指向的即使這個(gè)地址變量指向的目標(biāo)地址;
        這樣說可能有點(diǎn)暈了,我簡(jiǎn)單來說:指針的作用是什么呢? 就是用來存放地址的,地址是幾個(gè)字節(jié)呢 ?這要根據(jù)你的操作系統(tǒng),32為為四個(gè)字節(jié),64位為八個(gè)字節(jié)。所以指針變量名的大小為4Byte,但是它指向的空間就是你定義這個(gè)變了的大?。晃覀兌及凑?2bit操作系統(tǒng)來說明。
        例如:
         type  a,*p = NULL;
         p = &a; 
         此時(shí)指針p存放著a的地址。用sizeof(p) 他的大小永遠(yuǎn)為4Byte,因?yàn)閍的地址為4個(gè)字節(jié),所以P的大小為4Byte。但是這樣做sizeof(*p),他的大小就為type 類的字節(jié)。因?yàn)槭褂?通過a的地址來訪問a的大小,故大小就是type類型的大小。
         指針的加減法:
         short  a = 0x100;
         short  *p = &a;
         若a的地址為0x20008000,則
         p+1 = 0x20008002;     
         *p+1 = 0x101
         (int)p + 1 = 20008001;
         (int *)p + 1 = 0x20008004;
         (char *)p + 1 = 0x20008001;
         (char)p + 1 = 0x1;

數(shù)組:
數(shù)組就是把相同的類型存放在一起。
例如 type a[10]; a的類型就是type [10], a類型存儲(chǔ)空間大小就是type [10]
舉例 int arr[5],a的存儲(chǔ)大小就是四個(gè)整型的數(shù)據(jù)類型放在一起每一個(gè)int數(shù)據(jù)大小為4byte,總共為4*5=20byte此時(shí)數(shù)組名就有來過兩種含義了,一種是表示整個(gè)數(shù)組,還有一個(gè)表示表示第一個(gè)元素。

創(chuàng)新互聯(lián)公司長(zhǎng)期為近1000家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為呂梁企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè),呂梁網(wǎng)站改版等技術(shù)服務(wù)。擁有十余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

    為什么這要這樣說呢?
    因?yàn)樵诙x數(shù)組的時(shí)候就聲明了 數(shù)組的存儲(chǔ)大小,存儲(chǔ)大小怎么訪問呢,就是訪問數(shù)組的地址,例如sizeof(arr)就是整個(gè)數(shù)組的大小。但是sizeof(arr+1)

則表示一個(gè)元素的大小,為什么回事這樣呢?這是編譯器的做的工作,這個(gè)sizeof(arr)情況,編譯器就是認(rèn)為你訪問的大小就是正個(gè)空間大小,如果是arr+1,則認(rèn)為是type 的類型的加一。

指針與數(shù)組

 int *p,arr[10] = {0};
     p = a;
    把數(shù)組的第一個(gè)元素的地址賦值給p,則p就指向數(shù)組的第一個(gè) 元素,則p+1則表示這個(gè)類型的地址下一個(gè),也就是指向下一個(gè)元素的地址。

    ![](/upload/otherpic46/224307.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
         要明白 *p++  (*p)++  *(++p)  (*p++)++   ++(*++p)這幾種關(guān)系的含義

二維數(shù)組和指針
同樣二維數(shù)組名,有兩種含義,一種是第一個(gè)元素的地址,另一個(gè)是表示整個(gè)數(shù)組。和一維數(shù)組一樣,不同的是sizeof(a[0]) 表示第一行所有元素的空間大小和。這是為什么呢,因?yàn)閇 ] 是變址符,本來是a的地址,給他變成第一行的首地址,用sizeof來求就是這一行的元素大小之和。
int a[3][3];
sizeof +1

a[0] 12 12
a 36 12
&a[0] 4 12
&a 4 36

分享題目:指針與數(shù)組的緣定今生
轉(zhuǎn)載來于:http://www.rwnh.cn/article28/ippdjp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷型網(wǎng)站建設(shè)、網(wǎng)站營(yíng)銷、搜索引擎優(yōu)化、自適應(yīng)網(wǎng)站、品牌網(wǎng)站設(shè)計(jì)、外貿(mào)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)
高要市| 霍州市| 斗六市| 南江县| 谢通门县| 新邵县| 南宫市| 铜鼓县| 东港市| 罗城| 银川市| 斗六市| 浏阳市| 武隆县| 武汉市| 扶风县| 将乐县| 梁山县| 大安市| 枝江市| 德惠市| 德昌县| 昔阳县| 廉江市| 花莲市| 海淀区| 封开县| 睢宁县| 丰县| 屏边| 宁强县| 吴川市| 辽中县| 宜兴市| 石景山区| 孝感市| 仁怀市| 北海市| 湛江市| 林周县| 阳山县|