1. 程式人生 > >初學Linux(二)---Linux下C語言中的陣列與指標

初學Linux(二)---Linux下C語言中的陣列與指標

初學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的使用

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

相關推薦

C語言陣列指標的區別

本文是對《C語言深度剖析》一書內容的拓展,在看這本書的時候解了很多我之前的一些困惑,故在此記錄。對陣列的引用總是可以寫成對指標的引用,而且確實存在一種指標和陣列的定義完全相同的上下文環境。 但是指標和陣列還是在本質上是不一樣的。指標就是指標,指標變數在32位的系統下面是4B

初學Linux---LinuxC語言陣列指標

初學Linux(二)—Linux下C語言中的陣列與指標 在經過階段一的linux學習之後,我來到了階段二的Linux下的C語言程式設計,雖然學到目前linux下的C語言似乎跟之前學的C語言所差無幾,但是按照老師的話來說,C語言指標這塊尤為重要,而我在這一方面的

嵌入式c語言基礎 --陣列指標

嵌入式c語言基礎 1.指標與陣列 指標是一種變數的型別,存放某一元素的地址 指標獲取陣列中的值 #include <stdio.h> int main(void) { int a = 10; int *p = &a;

c語言--關於陣列指標的一些基本運算

一.sizeof()的有關運算1.知識:當陣列名a單獨放在sizeof()內部(即 sizeof(a))時,a表示整個陣列;當陣列名a單獨放在&後面時(即&a),a表示整個陣列;其餘的a

Golang 入門基礎教程Linux 平臺安裝Golang基礎環境

Linux平臺下安裝Golang的話可以直接下載官方原始碼包, 注意:如果系統內安裝過其他版本的Golang原始碼包,必須先將之前的清除掉 1、解壓原始碼包 解壓原始碼包到 /usr/local目錄下 > sudo tar -C /usr/local

Git-入門教程-Linux、MacOS和Windows安裝使用

0.摘要 本文主要介紹在Linux、MacOS和Windows三種系統下Git的安裝與使用,具體的Git命令和詳細使用方法在其他部落格中講解。 1.Linux下的安裝與使用 CentOS:使用yum安裝git yum install -y git -y引數:安裝

JVM調優——Linux監控java執行緒

Linux環境下,當發現java程序佔用CPU資源非常高,且又要想更進一步查出哪一個java執行緒佔用了CPU資源時該如何做呢? 一、採用命令列形式檢視執行緒,最終用dump進行文字分析 1、top命令既可以看程序,又可以看執行緒 1、top命令找出佔用資源厲害

MemcacheMC系列LinuxMemcache安裝

Linux下memcache的安裝memcache是高效能,分散式的記憶體物件快取系統,用於在動態應用中減少資料庫負載,提升訪問速度。目前用memcache解決網際網路上的大使用者讀取是非常流行的一種用法,在網際網路企業中有著廣泛的應用。1、下載memcache牆裂推薦官方下

Linux——Linux常用指令

文本文件 soft 字符數 san 廣播 sans 切換 創建 clear 1. 文件目錄操作命令 ls 顯示文件和目錄列表   -l 列出文件的詳細信息 -a 列出當前目錄所有文件,包含隱藏文件 mkdir 創建目錄     -p 父目錄不存在

Linux用戶管理Linux系統安裝

linux安裝 1、RedHatLinux安裝前準備硬件要求CPU:Intel、ADM、VIA兼營內存:SDRAM、EDO和DDR,建議容量在128MB以上,最大4GB硬盤:接口類型(IDE、SCSI、USB)、自由空間(最小:500MB、完全安裝:4.5G)網卡:一塊或多塊顯卡:VGAhttp://hard

linux學習linux配置網卡以及常見網絡問題排查

library ifconf netmask logs 切換網絡 peer local 但是 src 實驗環境環境:mac,vmware fusion 一、常用的虛擬機網絡連接模式。 NAT:推薦方式。它可以使你在切換網絡環境(比如在工作中和家裏)時,不需要修改虛擬主機的配

LinuxCentOS的安裝

ogr acf 程序 命名 分享 db2 操作 去掉 bbf centos6.8 鏈接:https://pan.baidu.com/s/1TjCYXzijMzfpiZ9Z-D1Qhg 密碼:7mvn 2.1 新建虛擬機 1 2.2 選中稍後安裝操作系統(先把虛擬機

軟件性能測試技術樹----Linux服務器性能

bsp 分析 處理方法 性能測試 linux ron j2e 跳轉 實時 全圖: 測試目的: 測試範圍&性能指標: 測試與生產環境服務器配置不同的處理方法: 實時CPU監控: 實時內存監控: 實時網絡監控: 實時磁盤監控: 萬能命令: Linux

linux

正式 子目錄 配置 ace 存在 大寫 傳送文件 ber 同名 文件和目錄常用命令 目標 查看目錄內容 ls 切換目錄 cd 創建和刪除操作 touch rm mkdir 拷貝和移動文件 cp mv 查看文件內容 cat more grep

java程式設計師菜鳥進階十四linux基礎入門linux檔案及目錄命令管理

大家都知道,熟悉命令操作的開發人員,Linux作業系統命令操作效率要高於圖形介面的操作,所以瞭解和學習linux基本命令操作是學習linux作業系統的首要任務,本文主要介紹以下四個知識點:   1.      She

Linux學習筆記-Linux常用命令-許可權管理

(二)Linux學習筆記-Linux常用命令-許可權管理 許可權管理 chmod(更改檔案或目錄許可權) chown(變更所有者) chgrp(變更所屬組) umask(顯示、設定新建檔案或目錄的預設許可權)

作業系統----Linux、Windows、MacOs選擇

首先,不管是WINDOWS作業系統、LINUX系統還是蘋果作業系統,甚至包括作業系統的鼻祖UNIX作業系統,最早都是用C語言編寫的。 實際上UNIX作業系統和C語言都是由貝爾實驗室的湯普森(Ken Thompson)和丹尼斯·裡奇(Dennis M. Ritchie)於1971年先後改造

CentOS 基本指令——Linux 使用者管理:建立使用者變更使用者組

首先我們使用 useradd 使用者名稱 命令建立一個新使用者: 然後需要繼續為新使用者建立密碼和主目錄: useradd -d "/home/username" -m passwd username 使用如下命令可以將使用者新增到不同的使用者組: usermod -

新手學Linux----Linux安裝配置MongoDB資料庫

    最近在學習研究linux,今天就教教大家怎麼在linux上安裝配置MongoDB資料庫 一、安裝步驟     1、下載及解壓     下載完成後用WinSCP複製到/us

LinuxLinux安裝NGINX

1.安裝環境    nginx是C語言開發,建議在linux上執行,本教程使用Centos6.5作為安裝環境。2.NGINX依賴庫    2.1gcc        安裝nginx需要先將官網下載的原始碼進行編譯,編譯依賴gcc環境,如果沒有gcc環境,需要安裝gcc