wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5575|回復: 0
打印 上一主題 下一主題
收起左側

C語言中二維字符數組

[復制鏈接]
跳轉到指定樓層
樓主
ID:128229 發表于 2016-6-27 01:55 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式


C
語言中二維字符數組的定義和初始化

一般來說,我們可能會希望定義一個二維字符數組并且在定義的時候就用一些字符串來初始化它。比如說:

Code:

1.char testcase[30][MAX_LENGTH] 

= {"jo","vicent","tom","honey","gigi","lily","susan","peter","bob","ron",  

2. "jason","henry","kiki","ken","auscar","vivian","yiyi","peace","iron","lotus"  

3. "andy","arta","ophone","denial","pipe","wade","james","kobe","kent","angel"};  

通常使用二維字符數組是為了在程序中存儲一些字符串關鍵字。用這樣的方式來初始化就最簡單不過了。其中,MAX_LENGTH是所有字符串中最大的長度。當然不能忘記'\0'了。

而定義一個字符二維數組,C也提供了簡潔的方式,如果我不想統計字符串的長度,我還可以這樣定義:

Code:

1.char *testcase[30] = {"jo","vicent","tom","honey","gigi","lily","susan","peter","bob","ron",  

2. "jason","henry","kiki","ken","auscar","vivian","yiyi","peace","iron","lotus"  

3. "andy","arta","ophone","denial","pipe","wade","james","kobe","kent","angel"};  

也就是說,可以不再數組定義的時候指定字符串的長度,但是注意字符串的個數是一定要指定的,像這樣寫 char **testcase = ... 是不行的,不過肯定不行了,因為int *pt=3 也不行,呵呵,這兩個例子是一個道理啊。

我覺得肯定是人都喜歡第二種初始化方法了,而且它還有一個優點,起碼對喜歡用指針的同志來說是一個大優點。就是可以將這樣定義的指針賦給一個二維指針,比如

char **pointer = testcase;

想形式1的定義方法肯定不能這樣賦值了。

不過非常非常值得注意的是,上面定義的兩個指針,一個一維,一個二維,他們必須在const關鍵字上一致,意思就是說如果定義testcase前面加了const關鍵字,定義pointer時也必須加上,否則就會報錯:

error C2440: 'initializing' : cannot convert from 'char *[30]' to 'const char **

在寫這篇 日志的過程中,我突然想到一個問題,就似乎利用上面的方法二初始化二維字符串數組之中,字符串是如何分布的呢?因為字符串的長度是不相等的,完全由編譯器 來計算,那么它是會按照最長的字符串來定制字符數組的長度,還是讓每一個字符串數組都按照自身的大小來占據內存,靠'\0'來識別結尾呢?

二維字符串數組的初始化-動態內存分配

昨天在用FBS200指紋采集芯片采集到一個二維數組數據后,利用串口傳輸上來的數據是以十六進制的數據格式表示的二維矩陣,比如“FF”“BD”“5C”等等這樣的形式,而對于一幅灰度圖像,一般都是在0255之間的數據來表示其亮度值,因此想通過二維字符串數組來對采集過來的數據進行轉化顯示。但在動態分配一個char **strstrnew char*[128];之后對其進行初始化時,總是出現錯誤,不知道如何才能很好的對其賦值,還得深入學習一下。

其實對一個字符的轉化很容易,但對一個字符串形式的字符來轉化,而且是對一個多維數組來轉化就有點吃力了。首先建立一個多維字符串數組,這里是二維的字符串數組,程序如下所示:

i nclude "stdio.h"

void main()

{

   char *str1[2][2]={"FF","F9","FA","F9"};//初始化一個二維字符串數組

   char *str;//定義一個一維字符串變量

   int a,b;

   int i,j;

   int result1;

   for (i=0;i<2;i++)

   {

       for (j=0;j<2;j++)

       {

          str=str1[i][j];//對一維字符串賦值

          printf("%s\n",str);

          if(str[0]>='A' && str[1]>='A')

          {

              a=int(str[0]-'A');

              b=int(str[1]-'A');

              result1=(a+10)*16+(b+10)*1;//“AA”“FF”之間的轉化結果

          }

          else if (str[0]>='A' && str[1]<'A')

          {

              a=int(str[0]-'A');

              b='A'-str[1]+1;

              result1=(a+10)*16+b;//“A0”“F9”之間的轉化結果

          }

          else if (str[0]<'A' && str[1]>='A')

          {

              a='A'-str[0]+1;

              b=int(str[1]-'A');

              result1=a*16+(b+10)*1;//“0A”“9F”之間的轉化結果

          }

          else

          {

              a='A'-str[0]+1;

              b='A'-str[1]+1;

              result1=a*16+b;//“00”“99”之間的轉化結果   

          }

          printf("a=%d\n",a);

          printf("b=%d\n",b);

          printf("%d\n",result1);    

       }

   }

}

這里只是用2×2的字符串數組做了一個實驗,一幅圖像都是比較大的,這樣在對數組初始化時會占用很多的內存,這樣有時會造成編譯無法通過,昨天就很有幾次死機,當時只是用到64×64的數組。后來把數組的初始化放到main的外面,作為全局變量,在棧中靜態的分配一塊內存空間,雖然可行,但也很占內存,于是想到了在函數中動態分配內存,對動態分配內存又重新學習了一遍,不了解的可以和我一起學習一下。 



動態內存分配

1.堆內存分配 :

C/C++定義了4個內存區間:代碼區,全局變量與靜態變量區,局部變量區即棧區,動態存儲區,即堆(heap)區或自由存儲區(free store)。

堆的概念:

通常定義變量(或對象),編譯器在編譯時都可以根據該變量(或對象)的類型知道所需內存空間的大小,從而系統在適當的時候為他們分配確定的存儲空間。這種內存分配稱為靜態存儲分配;

有些操作對象只在程序運行時才能確定,這樣編譯時就無法為他們預定存儲空間,只能在程序運行時,系統根據運行時的要求進行內存分配,這種方法稱為動態存儲分配。所有動態存儲分配都在堆區中進行。

當程序運行到需要一個動態分配的變量或對象時,必須向系統申請取得堆中的一塊所需大小的存貯空間,用于存貯該變量或對象。當不再使用該變量或對象時,也就是它的生命結束時,要顯式釋放它所占用的存貯空間,這樣系統就能對該堆空間進行再次分配,做到重復使用有限的資源。

2.堆內存的分配與釋放

堆空間申請、釋放的方法:

C++中,申請和釋放堆中分配的存貯空間,分別使用newdelete的兩個運算符來完成:

指針變量名=new 類型名(初始化式)

delete 指針名;

例如:

1 int *pi=new int(0);

它與下列代碼序列大體等價:

2int ival=0, *pi=&ival;

區別:pi所指向的變量是由庫操作符new()分配的,位于程序的堆區中,并且該對象未命名。  

堆空間申請、釋放說明:

⑴.new運算符返回的是一個指向所分配類型變量(對象)的指針。對所創建的變量或對象,都是通過該指針來間接操作的,而且動態創建的對象本身沒有名字。

⑵.一般定義變量和對象時要用標識符命名,稱命名對象,而動態的稱無名對象(請注意與棧區中的臨時對象的區別,兩者完全不同:生命期不同,操作方法不同,臨時變量對程序員是透明的)

⑶.堆區是不會在分配時做自動初始化的(包括清零),所以必須用初始化式(initializer)來顯式初始化。new表達式的操作序列如下:從堆區分配對象,然后用括號中的值初始化該對象。

3.堆空間申請、釋放演示:

⑴.用初始化式(initializer)來顯式初始化

int *pi=new int(0);

⑵.pi生命周期結束時,必須釋放pi所指向的目標:

delete pi;

注意這時釋放了pi所指的目標的內存空間,也就是撤銷了該目標,稱動態內存釋放(dynamic memory deallocation),但指針pi本身并沒有撤銷,它自己仍然存在,該指針所占內存空間并未釋放。

下面是關于new 操作的說明

⑴.new運算符返回的是一個指向所分配類型變量(對象)的指針。對所創建的變量或對象,都是通過該指針來間接操作的,而動態創建的對象本身沒有名字。

⑵.一般定義變量和對象時要用標識符命名,稱命名對象,而動態的稱無名對象(請注意與棧區中的臨時對象的區別,兩者完全不同:生命期不同,操作方法不同,臨時變量對程序員是透明的)

⑶.堆區是不會在分配時做自動初始化的(包括清零),所以必須用初始化式(initializer)來顯式初始化。new表達式的操作序列如下:從堆區分配對象,然后用括號中的值初始化該對象。

4. 在堆中建立動態一維數組

申請數組空間:

指針變量名=new 類型名[下標表達式];

注意:下標表達式不是常量表達式,即它的值不必在編譯時確定,可以在運行時確定。

釋放數組空間:

delete [ ]指向該數組的指針變量名;

注意:方括號非常重要的,如果delete語句中少了方括號,因編譯器認為該指針是指向數組第一個元素的,會產生回收不徹底的問題(只回收了第一個元素所占空間),加了方括號后就轉化為指向數組的指針,回收整個數組。delete [ ]的方括號中不需要填數組元素數,系統自知。即使寫了,編譯器也忽略。

i nclude <iostream.h>

i nclude <string.h>

void main(){

   int n;

   char *pc;

   cout<<"請輸入動態數組的元素個數"<<endl;

   cin>>n; //n在運行時確定,可輸入17

   pc=new char[n]; //申請17個字符(可裝8個漢字和一個結束符)的內存空間

   strcpy(pc,“堆內存的動態分配”);//

   cout<<pc<<endl;

   delete []pc;//釋放pc所指向的n個字符的內存空間

   return ; }

5. 動態一維數組的說明

① 變量n在編譯時沒有確定的值,而是在運行中輸入,按運行時所需分配堆空間,這一點是動態分配的優點,可克服數組大開小用的弊端,在表、排序與查找中的算法,若用動態數組,通用性更佳。一定注意:delete []pc是將n個字符的空間釋放,而用delete pc則只釋放了一個字符的空間;

② 如果有一個char *pc1,令pc1=p,同樣可用delete [] pc1來釋放該空間。盡管C++不對數組作邊界檢查,但在堆空間分配時,對數組分配空間大小是紀錄在案的。

③ 沒有初始化式(initializer),不可對數組初始化。

6.指針數組和數組指針

指針類型:

(1)int*ptr;//指針所指向的類型是int

(2)char*ptr;//指針所指向的的類型是char

(3)int**ptr;//指針所指向的的類型是int* (也就是一個int * 型指針)

(4)int(*ptr)[3];//指針所指向的的類型是int()[3] //二維指針的聲明

指針數組:

一個數組里存放的都是同一個類型的指針,通常我們把他叫做指針數組。

比如 int * a[2];它里邊放了2int * 型變量 .

int * a[2]

a[0]= new int[3];

a[1]=new int[3];

delete a[0];

delete a[1];

注意這里 是一個數組,不能delete [] ;

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
亚洲精品午夜在线观看| 亚洲爱爱天堂| 久久香蕉视频网站| 99re热这里只有精品免费视频| 欧美日韩黄色| 国产麻豆永久视频| 日韩三级小视频| 在线看成人av电影| 日韩av最新在线| 久久亚洲精华国产精华液| 亚洲欧美专区| 日韩私人影院| 91禁在线观看| 一区二区精品免费| 亚洲成年人在线播放| 91亚洲大成网污www| 亚洲高清免费| 加勒比视频一区| 第一av在线| 在线视频专区| 影音先锋2020资源| 国产熟女一区二区丰满| √天堂中文官网8在线| 999久久久精品视频| 一级性生活视频| 成人区精品一区二区| 欧美在线免费观看视频| av亚洲精华国产精华精| 免播放器亚洲| 欧美大片1688网站| 国产在线观看黄| 色视频网站在线| 蜜桃色永久入口| 亚洲天堂中文在线| 精品无码久久久久| 美女被到爽高潮视频| 国外成人在线视频| 亚洲精品视频二区| 欧美日本在线看| 国产九九视频一区二区三区| 亚洲先锋影音| 视频精品在线观看| 一区二区精彩视频| 偷拍视频一区二区三区| 18+视频在线观看| 久久天堂电影| 一级毛片免费观看| 三级黄色的网站| 小说区图片区图片区另类灬| 亚洲xxxx做受欧美| 欧亚一区二区三区| 亚洲欧洲综合另类在线| 久久一二三国产| 国产成人av自拍| 欧美2区3区4区| 国产91在线精品| 成人在线黄色电影| 丝袜+亚洲+另类+欧美+变态| 手机福利视频欧美| 狠狠色噜噜狠狠狠888奇米| 欧美另类色图| 热99re久久精品这里都是免费| 91亚洲精品国偷拍自产在线观看 | 欧美亚洲日本网站| 欧美成人免费网| 亚洲女人被黑人巨大进入| 国产日韩精品视频一区| 亚洲精品a级片| free欧美| 日本免费一区二区六区| 污视频在线看网站| 超碰在线caoporn| 国产在线日本| 久久综合九色综合久| 翔田千里在线视频| 免费看男男www网站入口在线| 在线免费看污| 日本福利片高清在线观看| 中日韩一区二区三区| 伊人网在线免费观看| 国产精品一区牛牛影视| 久久亚洲国产成人亚| 欧美精品se| 国产91中文| 美女被内谢流白浆高视频| www五月婷婷| 国产精品久久久久久久久久久久久久久久久久 | 亚洲wwwav| 91久久大香伊蕉在人线| 国产精品视频福利| 欧美中日韩免费视频| 国产系列第一页| 日本福利视频在线| 久久久国产成人精品| 精品成人久久av| 久久亚洲影视婷婷| 中文字幕亚洲一区二区av在线| 国产精品久久久久久户外露出| 亚洲综合999| 欧美影视一区在线| 亚洲精品久久久久中文字幕欢迎你 | 在线成人综合色一区| 先锋资源中文字幕| 日本影音先锋电影| 欧美18一12sex性处hd| yourporn在线观看视频| caoporn-草棚在线视频最| 色中色在线视频| www.亚洲.com| 超碰在线公开| 91网站免费入口| 中日韩精品视频在线观看| 91精品在线视频观看| palipali轻量版永久网页入口| 一色屋免费视频| 91精品久久久久久9s密挑| 日本在线人成| 色婷婷综合久久久中字幕精品久久| 凹凸av导航大全精品| 亚洲美女视频| 国产综合色在线视频区| 国产精品久久久久久一区二区三区| 午夜精品视频在线观看| 日韩视频中午一区| 久久久综合av| 久久久久久99| www.xxx亚洲| 国精产品一区一区二区三区mba| 伊人久久成人网| 尤物在线视频观看| 国产系列在线观看| 四虎地址8848精品| 国产精品九九| 久久天天做天天爱综合色| 91国模大尺度私拍在线视频| 中文字幕av一区中文字幕天堂 | 欧美日精品一区视频| 亚洲欧美制服第一页| 欧美做受高潮电影o| 色一情一伦一子一伦一区| 国产精品久久久久三级| 欧美在线观看视频一区二区| 最新国产成人av网站网址麻豆| 成人激情免费在线| 玩弄中年熟妇正在播放| 懂色av蜜桃av| 刘玥91精选国产在线观看| 九色丨porny丨| 男人av在线播放| 国产精品精品| 亚洲一区二区伦理| 欧美国产精品一区| 欧美一区欧美二区| 88国产精品欧美一区二区三区| 日本一区二区三区在线视频| 国产精久久久久| 中国黄色一级视频| 黄色免费av| 国产极品在线观看| 欧美a级片网站| 欧美国产日产图区| 日韩av中文在线| 91成人伦理在线电影| 37pao成人国产永久免费视频| 亚洲涩涩在线观看| 日本一区二区三区精品| 瑟瑟视频在线免费观看| 91.www| 污污的网站在线看| 欧美福利网址| 亚洲免费高清视频在线| 在线视频日韩精品| 91a在线视频| 800av在线免费观看| 国产精品嫩草影院俄罗斯| 四虎海外影库www4hu| 天天色天天干天天| 免费观看v片在线观看| www.久久爱.com| 蜜桃视频一区二区| 欧美在线你懂的| 国产精品美女www| 亚洲综合五月天| av女人的天堂| 精品一区二区三区免费站| 成人av黄色| 久久精品美女视频| 99热播在线观看| 青青在线精品| 午夜精品无码一区二区三区| 精品av中文字幕在线毛片| 红桃视频在线观看一区二区| 国产欧美一区二区精品性色 | 亚洲欧美一区二区三区在线播放| 精品视频在线一区| 成人精品在线视频观看| 亚洲1区2区3区视频| 欧美激情影音先锋| 欧美亚洲另类在线一区二区三区 | 久久99精品久久久久久久青青日本 | 国产精品久久久久久| 久久精品国产福利| 国产乱妇无码大片在线观看| 欧美精品一区二区三区视频| 欧洲精品久久| 国产午夜手机精彩视频| 午夜天堂在线观看| 国产原创一区| 不卡av在线免费观看| 亚洲毛片在线观看.| 成年人免费观看的视频| 亚洲天堂日韩av| www免费在线观看视频| 国精一区二区| 亚洲成人精品在线观看| 国产精品自产拍在线观| 好吊日免费视频| 在线观看视频色| 午夜久久av| 亚洲日本青草视频在线怡红院| 日本免费久久高清视频| 黄色激情在线视频| 中文字幕精品一区二| www日韩tube| 一本久道久久综合婷婷鲸鱼| 欧美一区二区三区啪啪| 一区二区三区四区视频在线| 销魂美女一区二区| 美女国产在线| 久久精品国产色蜜蜜麻豆| 亚洲天堂网在线观看| www.亚洲天堂网| 亚洲成人先锋电影| 日韩成人在线电影| 国产精品无遮挡| 国产精品久久久久久久午夜| 玖玖爱在线观看| 激情小说激情视频| 中文字幕一区二区av| 欧美一级日韩免费不卡| 免费成人进口网站| 成人福利小视频| 色综合一本到久久亚洲91| 国产亚洲精久久久久久| 国产精品久久久久久久久久久不卡 | 精品素人av| 亚洲成在人线免费| 激情五月综合色婷婷一区二区| 2一3sex性hd| 黄色a**址| 天天做天天爱天天综合网| 欧美乱妇一区二区三区不卡视频| 国产精品久久不能| 性少妇xx生活| 伪装者在线观看完整版免费| 久久午夜视频| 深夜福利国产精品| 好吊操视频这里只有精品| 先锋av影院| 国产精品videosex极品| 日韩成人久久久| 欧美日韩中文不卡| ass白嫩白嫩的小美女| 综合天天久久| 国产亚洲欧美一区| 91国在线精品国内播放 | 精品视频麻豆入口| 青青草久久爱| 欧美日韩一级大片网址| 成人免费观看在线| 精品卡一卡卡2卡3网站| 国产在视频线精品视频www666| 91精品国产福利在线观看| 你懂的av在线| 尤物在线视频观看| 黄色日韩精品| 另类色图亚洲色图| 激情六月丁香婷婷| 91日本韩国| 国产精品v日韩精品v欧美精品网站 | 黄色影院一级片| 影音先锋5566资源站| 韩国在线一区| 久久这里只有精品视频首页| 色无极影院亚洲| 免费黄网站在线观看| 91首页免费视频| 九色视频成人porny| 男人天堂网在线视频| 欧美重口另类| 亚洲国产精品久久久| 不许穿内裤随时挨c调教h苏绵| 色佬视频在线观看| 成人av免费观看| 国内精品久久国产| 男人天堂影院| 国产精品久久久久久影院8一贰佰| 一个色综合导航| 91狠狠综合久久久久久| 青草在线视频| 天天操天天色综合| 国产免费999| a天堂中文在线官网| 99久久99久久精品国产片果冻| 久精品国产欧美| 久久久久免费网站| 国内精品久久久久久久97牛牛| 色综合男人天堂| av大片在线免费观看| 九九九九九九精品任你躁| 亚洲精品一区二区三区影院| 欧美 日本 国产| wwwav91com| 丁香激情综合五月| 欧美中日韩免费视频| 国产一线天粉嫩馒头极品av| 校园激情久久| 91精品在线看| 极品美女一区二区三区视频| 激情五月***国产精品| 国产精品高清在线观看| 精品国产999久久久免费| 精品产国自在拍| 九九久久久久99精品| 成年人视频免费| 亚洲精品蜜桃乱晃| 欧美成人午夜剧场免费观看| 在线精品免费视| 日韩精品免费一区二区夜夜嗨 | 一二三av在线| 91高清在线视频| 午夜伊人狠狠久久| 国产精品999.| 女人天堂av在线播放| 欧美日韩亚洲综合在线| 久久无码人妻精品一区二区三区| caoporn-草棚在线视频最| 欧美美女一区二区| 午夜精产品一区二区在线观看的| 欧美magnet| 日韩精品欧美激情| 免费毛片在线播放免费| 在线看一级片| 一区二区日韩欧美| 777国产偷窥盗摄精品视频| 国产免费一区二区三区免费视频| 香蕉av一区二区| 成人xxxxx| 国产人成精品| hitomi一区二区三区精品| 欧美在线观看黄| 日本中文字幕电影在线观看 | 精品综合久久久久久8888| 麻豆亚洲一区| 天堂av一区二区三区| 国产一区二区你懂的| 精品在线视频一区二区| 变态黄色小视频网站| 国产精品视频在线看| 99热一区二区| 密臀av在线播放| 亚洲系列中文字幕| 亚洲天堂手机版| 亚洲综合国产激情另类一区| 欧美精品成人一区二区在线观看| 97看剧电视剧大全| 亚洲夂夂婷婷色拍ww47 | 97涩在线观看视频| 一区二区三区四区高清精品免费观看| 在线免费黄色小视频| 久草福利在线视频| 欧美亚男人的天堂| www.97视频| 欧美影视资讯| 欧美在线一级| 久久全球大尺度高清视频| 好男人官网在线| 成a人片亚洲日本久久| 国产美女三级视频| heyzo中文字幕在线| 国产亚洲a∨片在线观看| 亚洲天堂视频网| 日韩激情视频网站| 国产av熟女一区二区三区| 天天做夜夜操| 亚洲v日本v欧美v久久精品| 蜜桃传媒一区二区亚洲| 天堂在线精品| 成人av免费在线看| 一级毛片免费在线| 欧美精品成人一区二区三区四区| 欧美亚洲天堂网| 激情欧美一区二区三区| 神马影院午夜我不卡| 国产尤物视频在线| 精品一区二区三区三区| 国模无码一区二区三区| 粉嫩在线一区二区三区视频| 欧洲美女亚洲激情| 欧美绝顶高潮抽搐喷水合集|