国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

初學Linux(二)---Linux下C語言中的數組與指針

2019-11-08 19:53:37
字體:
來源:轉載
供稿:網友

初學linux(二)—Linux下C語言中的數組與指針

在經過階段一的linux學習之后,我來到了階段二的Linux下的C語言編程,雖然學到目前linux下的C語言似乎跟之前學的C語言所差無幾,但是按照老師的話來說,C語言指針這塊尤為重要,而我在這一方面的學習也不夠透徹,本文就寫寫C語言中數組與指針的關系與一些使用的例子。

一、數組與指針的存儲原理

按照林世霖老師的說法,數組和指針的存儲機制是一樣的,只是存放的東西不同。所以我就按照老師的思路寫。 如果按照種菜來舉例,數組和指針只是種的菜不同。一個是放數據(int float…),一個放地址。下面舉三個例子說明他們的存儲。 例1: int a[3] ; 挖三個坑(申請三塊內存)緊挨著的,里面存放int類型的數據。 這里寫圖片描述 例2: int b[2][3]; 可看成 int (b[2]) [3] 先挖兩個坑,一個坑存放三個int型數據。 這里寫圖片描述 例3: int *p[3] []優先級更高 所以先申請三塊內存,存放地址 這里寫圖片描述 總結:里面放什么取決于第二部分

繼續舉例子 一、 Int a; Int *p; 指針放地址 ; 把a的地址賦給p p=&a; p等于a的地址 于是p也可以間接使用a *p則是a的值 即 =a; 二、 int *(*q); 也是跟之前的一樣 ,先申請一塊內存 然后第二步,存放的東西是什么 是一個指針的地址 如果要放 int a 的地址 ,那就是錯的 放int *p的地址 ,那就可以,很合適 三、 int *k[3] 等于 int (*k)[3] *k第一部分 申請一塊內存 放地址 放int a[3]的地址 k=&a;

當然,指針也可以指向函數 。 例: int func(char a); int (*p)(char a); p=&func;

二、數組的一些使用

1、自適應

比如我一開始定義了 int a[] ={1,3,4,5}; 我希望他全部打印出來,但是我又不清楚他有多少個。 這時候就要使用 for(i=0;isizeof(a)/sizeof(a[0];i++) { … } 也稱為自適應。

2、數組的復制

int a1 [3]={1,2,3); int a2 [3]={4,5,6); a1=a2; 這條語句是錯誤的 ! 任何數組都不能直接賦值。 但是我們至少有兩種方法可以賦值 一種是一個一個來 。比如a1[0]=a2[0]; 第二種是使用memcpy函數 memcpy(a1,a2,sizeof(a2));這句話是將a2正塊內存復制到a1

3、字符數組

char s1[10]={‘a’,’b’,’c’}; char s2[10]={“abc”}; char s3[10]=”abc”; char s4[10]={‘a’,’b’,’c’,’/0’}; 注意了,s2等于s3,s1不等于s2 ,因為s2和s3有‘/0’ ,s2等于s4 。 還有 char s5[3]=”abc”; 是越界!!

4、關于數組的地址

int a[3]

1,直接用數組取址,代表整個數組的地址,&a 2,數組名代表其首元素的地址 a ==》&a[0] 3,這張圖說明了數組地址存放

數組地址原理圖 4,調用函數把數組作為實參,實際上是指針的使用 傳首元素的地址,這里不詳細講解。 這里寫圖片描述

這里寫圖片描述

三、擴展

1指針的大小固定為四個字節。 2數組的剛開始的地址稱為基地址。 3coast的使用

第一行和第二行效果相同 這里寫圖片描述


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阿图什市| 松原市| 申扎县| 新津县| 万山特区| 杭锦后旗| 连平县| 南阳市| 宜城市| 滁州市| 安顺市| 文化| 准格尔旗| 清涧县| 北海市| 新余市| 兴安盟| 清水河县| 宁陕县| 浙江省| 都安| 甘德县| 临颍县| 福建省| 盐津县| 大名县| 德保县| 吴忠市| 舒兰市| 灵山县| 象州县| 璧山县| 和政县| 体育| 年辖:市辖区| 德化县| 蓝田县| 蛟河市| 蛟河市| 沿河| 邮箱|