1樓:匿名使用者
char (*p)[3]
我們可以可以看到p是指向一個有三個元素的字元陣列的指標。
那麼當p++的時候,相當於跳過指向的陣列。
再來看一下,char aa[ ][3]=;
我們可以發現aa是二維陣列,而p指向的是一維陣列。
所以我們去分解aa讓他變成兩個一維陣列
和p在++操作前其實是指向前面那個一維陣列,當p++之後,p此時其實指向了,那麼**p就是取當前陣列的第一個字元,我們可以知道那個字元就是『d』。
清楚了嗎?
你會有疑問為什麼二維陣列為什麼可以分解成兩個一維陣列,因為陣列不管是幾維其實就是一塊連續的記憶體。『d』其實就是接在『c』的後面。懂了嗎?
若有以下的陣列定義:char str[]="abcd";char b[]={'a','b','c','d','e'},這兩個陣列他長度為什麼
2樓:匿名使用者
字元陣列!= 字串
字串要求有『\0'結尾,字元陣列沒有!
char str="abcd" ; 這種初始化版,是將一個字串常量權賦值給一個字元陣列str,是「abcd」常量中含有'\0'
char b= ; 這種初始化,是給陣列中的每個元素賦值,與字串無關。因此,沒有』\0'的概念
3樓:
str陣列的長度是5,包括4個字母和一個字串結束符b陣列的長度也5,包括5個字母
使用雙引號設定的字串,系統自動新增字串結束符使用單引號,內容是按單字元處理的
4樓:匿名使用者
額,我只知道你用strlen函式時第一個是返回4,後面那個不太清楚了,建議你以後凡是遇到字串的都用string來搞吧,比char的陣列容易的多,也安全的多。
設有變數定義語句char a; 則下面的賦值語句中 ( ) 是正確的。 a.a=』&』 b.a=」&」 c.a=』16』 d.a=』 』
5樓:匿名使用者
b選項中的"&"是一個字串,不是字元,因為它是用雙引號括的。
c選項中的單引號之間包含了多個字元,是個多位元組字元,嚴格意義上不算錯,它會將低位元組字元賦予變數a。
d選項中在要把單引號字元賦予a,而單引號同時也是一個操作符號,因此要用轉義字元,即加上斜線,寫成a='\''
a選項是標準形式。
對兩個陣列a和b進行如下初始化: char a[] = 「abcdef」; char b[] = {『a』,『b』,『c』,『d』,『e』,『f
6樓:蒼穹夜光
要不這樣理解吧
首先a作為字串長度為6;
作為字元陣列有7個元素,包含\0,a陣列的長度為7;
b是字元陣列有6個元素,不是字串,b陣列的長度為6;選d
7樓:匿名使用者
"abcdef」;是字串,字串預設是有字串結束符的。
所以選d
8樓:匿名使用者
樓主首先要明白的是什麼是長度。陣列元素的個數稱之為陣列的長度。
現在再看看問題 第一個是 字串,第二個是字元陣列 ,字串以'\0'為結束符號,字元陣列不用。
那就很明白了。b 對。
要說明的是,雖然他們長度相同,不過佔的記憶體位元組數是不一樣的,第一個佔7個位元組(後面的'\0'佔一個。)第二個佔6個位元組。
9樓:酷兒
#include
void main()
;m=sizeof(a);
n=sizeof(b);
printf("a 所佔位元組數 %d,b 所佔位元組數 %d\n",m,n);
}所以選d
10樓:用飄柔洗腳丫
#include
#include
using namespace std;
int main();
cout<:67
答案自己猜
11樓:喜歡種蘑菇
答案是d,a陣列比b陣列長度長
原因:a陣列的長度是6,b陣列的長度是7。
在c語言中沒有專門的字串變數,通常用一個字元陣列來存放一個字串。字串總是以'\0'作為串的結束符。
因此當把一個字串存入一個陣列時,也把結束符 '\0'存入陣列,並以此作為該字串是否結束的標誌。
即陣列a的實際存放情況為:a b c d e f '\0' 而陣列b的實際存放情況為:a b c d e f
詳細說明:
把一個字串賦值給陣列:u4 str1=;
實際上陣列str1在記憶體中的實際存放情況為: c x k n m s l '\0'
這後面的'\0'是由c編譯系統自動加上的。所以在用字串賦初值時一般無須指定陣列的長度, 而由系統自行處理。
把字元陣列str1中的字串拷貝到字元陣列str2中,串結束標誌'\0'也一同拷貝。
個案:1、當陣列長度不夠。假設我們指定了陣列長度,如:u4 str1[7]=;
由於字元組str1的長度為7,所以後面的資訊會丟失,即'\0'丟失。
2、如果在給陣列賦值時,把每個字元單獨用引號括起來,也會丟失'\0'。
如:u4 str1=;
如果希望陣列以'\0'結束,則可以寫成以下三者之一:
u4 str1=; //字串賦值
u4 str1=; //人工新增
u4 str1[8]=; //故意給陣列預留一個空位
1 有如下定義 struct int x int ys 21,23,4p s寫出表示式 p x和px
1 p x 2 p x 3 2 34,12 struct int x int y s 2 1,2 3,4 p s 寫出表示式 p x和 p x的結果是什麼 求過程 10 由於 的優先符大於 所以第一個是先指向x然後向下移一個,第二個是先移一個然後指向x 前置 和後置 的問題 c語言陣列的初始化表示方...
設有變數定義「intx 1,y 2,z 3計算下列表示式的值
1 這個是要求什麼表示式的值呢?後面的除2 2 完全沒有作用啊,執行後x 2,因為x是整型 若是x float y 0.5 2,執行後x 1 2 逗號 運算子求職順序為自左至右,所以,執行 x,y 後x 0,y 3,z 3,然後求得最右邊x y z 6並將此結果賦給z 3 等號 運算子結合方向為自右...
MATLAB定義多個符號變數
用一個迴圈即可實現多變數定義 fori 1 100 syms x num2str i end 如果我們 不會太多的mantlab功能,那我們 就運用我們所知道版的去完成那些我權們未知的 功能,這樣也可不必被軟體約束和限制。我想問下 你學習了抄幾天matlab 或者是否壓 襲根沒有學習matlabma...