亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

IOS開發之路--C語言一維數組、多維數組和字符串

2020-02-19 15:57:56
字體:
來源:轉載
供稿:網友

概覽

數組在C語言中有著特殊的地位,它有很多特性,例如它的存儲是連續的,數組的名稱就是數組的地址等。而在C語言中是沒有String類型的,那么如果要表示一個字符串,就必須使用字符串數組。今天主要就介紹如下三個方面:

一維數組 多維數組 字符串

一維數組

一維數組操作比較簡單,但是需要注意,數組長度必須是固定的,長度不能使用變量進行初始化;如果聲明的同時進行賦值則數組長度可以省略,編譯器會自動計算數組長度;同時數組不能先聲明再一次性賦值(當然可以對每個元素一一賦值)。

#include int main(){  int len = 2;  //int a[len] = { 1, 2};//錯誤,不能使變量  int a[2];//正確  a[0] = 1;  a[1] = 2;  //a[2] = 3;//超過數組長度,但是編譯器并不會檢查,運行報錯  int b['a'] = {1,2,3};//'a'=97,所以可以作為數組長度,但是后面的元素沒有初始化,其值默認為0  for (int i = 0; i 

擴展--數組的存儲

數組在內存中存儲在一塊連續的空間中,如果知道數組類型(int、float等)和初始地址就可以知道其他元素的地址,同時由于數組名等于數組第一個元素的地址,所以當數組作為參數(作為參數時形參可以省略)其實是引用傳遞。

#include int main(){  int const l = 3;  int a[l] = { 1, 2,3 };  for (int i = 0; i 

我們看一下上面定義的數組在內存中存儲結構

再來看一下數組(注意不是數組的元素,是數組)作為參數傳遞的情況

#include void changeValue(int a[]){  a[0] = 10;}int main(){  int a[2] = {1,2};  changeValue(a);  for (int i = 0; i 

多維數組

多維數組其實可以看成是一個特殊的一維數組,只是每個元素又是一個一維數組,下面簡單看一下多維數組的初始化和賦值

#include int main(){  int a[2][3];//2行3列,二維數組可以看成是一個特殊的一維數組,只是它的每一個元素又是一個一維數組  a[0][0] = 1;  a[0][1] = 2;  a[0][2] = 3;  a[1][0] = 4;  a[1][1] = 5;  a[1][2] = 6;  for (int i = 0; i 

擴展--多維數組的存儲

以上面a數組為例,它在內存中的結構如下圖

根據上圖和一維數組的存儲,對于二維數組可以得出如下結論:數組名就是整個二維數組的地址,也等于第一行數組名的地址,還等于第一個元素的地址;第二行數組名等于第二行第一個元素的地址。用表達式表示:

a=a[0]=&a[0][0] a[1]=&a[1][0]

關于多維數組,其實可以以此類推,在此不再贅述。

字符串

在C語言中是沒有字符串類型的,如果要表示字符串需要使用char類型的數組,因為字符串本身就是多個字符的組合。但是需要注意的是字符串是一個特殊的數組,在它的結束位置必須要加一個”/0”(ASCII中0是空操作符,表示什么也不做)來表示字符串結束,否則編譯器是不知道什么時候字符串已經結束的。當直接使用字符串賦值的時候程序會自動加上”/0”作為結束符。

//// main.c// ArrayAndString//// Created by KenshinCui on 14-7-06.// Copyright (c) 2014年 Kenshin Cui. All rights reserved.//#include int main(int argc, const char * argv[]){  char a[] = {'K','e','n','s','h','i','n','/0'};  printf("%s",a); //結果:Kenshin,注意使用%s輸出字符串內容,如果換成整形輸出格式其實輸出的是a的地址  printf("/n");  printf("address=%x", a); //結果:address=5fbff890  printf("/n");  //后面的/0絕對不能省略,如果沒有/0則會出現如下情況  char b[] = { 'I', 'a', 'm'};  printf("%s",b); //沒有按照期望輸出,多了一些垃圾數據,在當前環境打印結果:IamKenshin  printf("/n");  printf("address=%x",b); //結果:address=5fbff88d  printf("/n");  //直接賦值為字符串,此時不需要手動添加/0,編譯器會自動添加  char c[] = "Kenshin";  printf("c=%s",c); //結果:c=Kenshin  printf("/n");    //二維數組存儲多個字符串  char d[2][3]={"Kenshin","Kaoru","Rose","Jack","Tom","Jerry"};      return 0;}

從上面代碼注釋中可以看到打印b的時候不是直接打印出來“Iam”而是打印出了“IamKenshin”,原因就是編譯器無法判斷字符串是否結束,要解釋為什么打印出“IamKenshin”我們需要了解a和b在內存中的存儲。

從圖中我們不難發現由于a占用8個字節,而定義完a后直接定義了b,此時分配的空間連續,b占用3個字節,這樣當輸出b的時候由于輸出完“Iam”之后并未遇到”/0”標記,程序繼續輸出直到遇到數組a中的“/0”才結束,因此輸出內容為“IamKenshin”。

擴展--字符串操作常用函數

下面簡單看一下和字符和字符串相關的常用的幾個函數

//// main.c// ArrayAndString//// Created by Kenshin Cui on 14-7-04.// Copyright (c) 2014年 Kenshin Cui. All rights reserved.//#include int main(int argc, const char * argv[]){  /*字符操作*/  putchar('a'); //結果:a,putchar一次只能輸出一個字符  printf("/n");  putchar(97);//結果:a  printf("/n");  char a;  a=getchar();//getchar()一次只能接收一個字符,可以接收空格、tab、回車  printf("a=%c",a);  printf("/n");  /*字符串操作*/  char b[]="Kenshin";  printf("b=%s",b);  printf("/n");  puts(b); //puts用于輸出單個字符串,不能像printf格式化輸出,會自動添加換行  printf("/n");    char c[10];  scanf("%s",c);//注意c沒必要寫成&c,因為c本身就代表了數組的地址  printf("c=%s/n",c);//注意即使你輸入的內容大于10,也能正確輸出,但是下面的gets()函數卻不行  printf("/n");    //gets()函數,注意它是不安全的,因為接收的時候不知道它的大小容易造成溢出,建議不要使用  char d[10];  gets(d); //gets一次只能接收一個字符串,但是scanf可接收多個;scanf不能接收空格、tab,gets則可以  printf("d=%s",d);  printf("/n");    char e[]={'K','s','/0'};  printf("%lu",strlen(e)); //結果是:2,不是3,因為/0不計入長度  printf("/n");  char f[]={"Kenshin"};  printf("%lu",strlen(f)); //結果是:7  printf("/n");    char g[5];  strcpy(g,"hello,world!");  printf("%s",g); //結果是:hello,即使定義的g長度為5,但是也能完全拷貝進去  printf("/n");  char h[5];  char i[]={'a','b','c','/0','d','e','f','/0'};  strcpy(h,i);  printf("%s",h); //結果是:abc,遇到第一個/0則結束  printf("/n");    strcat(i,"ghi");  printf("%s",i); //結果是:abcghi,注意不是abcdefghi,strcat,從i第一/0開始使用“ghi”覆蓋,覆蓋完之后加上一個/0,在內存中目前  應該是:{'a','b','c','g','h','i','/0','f','/0'}  printf("/n");    char j[]="abc";  char k[]="aBc";  char l[]="acb";  char m[]={'a','/0'};  printf("%d,%d,%d",strcmp(j,k),strcmp(k,l),strcmp(l,m));//遇到第一個不相同的字符或/0則返回兩者前后之差,結果:32,-33,99  printf("/n");  return 0;}

注意在Xcode中會提示gets是不安全的,因為Xcode使用的是gcc編譯器,在gcc編譯器中已經不能正確編譯gets()函數,推薦使用fgets()。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲丁香久久久| 中国人与牲禽动交精品| 国产精品视频最多的网站| 国产精品久久婷婷六月丁香| 亚洲精品国产精品国自产在线| 亚洲精品aⅴ中文字幕乱码| 精品一区二区亚洲| 一区二区三区在线播放欧美| 久久久精品亚洲| 欧美午夜影院在线视频| 91亚洲va在线va天堂va国| 热久久这里只有精品| 欧美网站在线观看| 国产精品高潮粉嫩av| 亚洲自拍偷拍第一页| 欧美精品久久久久a| 国产脚交av在线一区二区| 精品视频久久久| 九九久久精品一区| 国产91精品黑色丝袜高跟鞋| 韩日欧美一区二区| 国产精品亚洲自拍| 日韩**中文字幕毛片| 国产精品免费网站| 黑人巨大精品欧美一区免费视频| 亚洲精品电影网站| 成人午夜小视频| 欧美野外猛男的大粗鳮| 欧美性xxxx| 亚洲最大福利视频网站| 久久九九国产精品怡红院| 热99久久精品| 国产91精品最新在线播放| 久久久在线观看| 91在线无精精品一区二区| 欧美激情精品久久久久久久变态| 久久精品国产69国产精品亚洲| 久久综合免费视频影院| 久久青草精品视频免费观看| 国产91精品黑色丝袜高跟鞋| 黑人巨大精品欧美一区二区免费| 91精品啪在线观看麻豆免费| 国产91在线播放| 国产亚洲精品久久久久久牛牛| 最近中文字幕mv在线一区二区三区四区| 欧美中在线观看| 青草热久免费精品视频| 欧美精品在线网站| 欧美日韩国产一中文字不卡| 98精品国产高清在线xxxx天堂| 国产视频自拍一区| 亚洲成人激情在线| 欧美专区中文字幕| 久久好看免费视频| 久久久精品久久久久| 黑人巨大精品欧美一区二区免费| 国产精品无码专区在线观看| 国产精品久久久久秋霞鲁丝| 国产做受高潮69| 久久成人亚洲精品| 久久久99久久精品女同性| 国产精品久久久久久亚洲影视| 日韩大陆毛片av| 中文字幕亚洲一区二区三区| 日本人成精品视频在线| 久久99久久99精品中文字幕| 亚洲www永久成人夜色| 欧美性高潮床叫视频| 欧美做爰性生交视频| 国产精品久久久久久久久男| 福利微拍一区二区| 久久亚洲精品成人| 国产欧美在线播放| 国产精品久久久999| 97精品国产97久久久久久| 欧美激情欧美激情| 欧美性猛交xxxx| 日韩中文字幕网| 国产日本欧美一区| 日韩国产激情在线| 欧美一区三区三区高中清蜜桃| 日韩免费不卡av| 国产精品女人久久久久久| 日韩成人在线免费观看| 欧美激情一区二区三区久久久| 欧美日韩国产成人高清视频| 成人在线观看视频网站| 久久久久久久久久亚洲| 亚洲美女福利视频网站| 韩剧1988免费观看全集| 成人黄色免费看| 成人情趣片在线观看免费| 久久亚洲精品国产亚洲老地址| 国产丝袜一区二区三区免费视频| 91av在线看| 欧美日韩精品国产| 亚洲剧情一区二区| 91chinesevideo永久地址| 午夜精品国产精品大乳美女| 欧美成人午夜剧场免费观看| 欧美理论在线观看| 亚洲精品成人久久久| 亚洲第一中文字幕在线观看| 亚洲精品99久久久久中文字幕| 亚洲视频在线播放| 97香蕉超级碰碰久久免费的优势| 日韩av在线播放资源| 国产精品久久久久久搜索| 亚洲va国产va天堂va久久| 国产精品第一页在线| 亚洲黄页视频免费观看| 国产精品v片在线观看不卡| 成人午夜在线视频一区| 欧美性在线观看| 亚洲女人天堂成人av在线| 亚洲乱码一区二区| 国产精品一香蕉国产线看观看| 国产欧美日韩丝袜精品一区| 久久伊人免费视频| 久久久在线免费观看| 国产精品久久久久久av| 日韩激情av在线播放| 欧美尺度大的性做爰视频| 69av在线视频| 欧美性20hd另类| 97国产成人精品视频| 亚洲电影免费在线观看| 国产精品你懂得| 欧洲一区二区视频| 日韩av电影国产| 亚洲人成在线观看| 国模极品一区二区三区| 国产精品综合网站| 欧美夫妻性生活xx| 国产精品永久免费视频| 久久在精品线影院精品国产| 免费av在线一区| 国产精品99久久久久久白浆小说| 久久影院在线观看| 亚洲毛片在线免费观看| 亚洲精品久久久久| 国产91在线播放九色快色| 日韩欧美极品在线观看| 欧美电影电视剧在线观看| 国产精品99久久久久久白浆小说| 亚洲韩国欧洲国产日产av| www日韩中文字幕在线看| 综合网日日天干夜夜久久| 欧美午夜激情小视频| 国外视频精品毛片| 亚洲成人精品视频在线观看| 欧美日韩性视频在线| 国产精品一区二区久久久| 亚洲激情第一页| 国内精品中文字幕| 91av在线国产| 欧美激情手机在线视频| 97精品伊人久久久大香线蕉| 国产热re99久久6国产精品| 午夜精品美女自拍福到在线| 欧美专区在线观看| 欧美黄色三级网站| 亚洲偷欧美偷国内偷| 九九热这里只有精品免费看|