1樓:草原上之狼
實際上,字元陣列和普通陣列一樣,沒有本質區別。請大家注意陣列型別的含義:資料型別指的是陣列所包含的元素的型別,而不是陣列名的型別,陣列名永遠是乙個指標,指向第乙個元素的位址,即陣列首位址。
字元陣列的每個元素都是char型別,整型陣列的每個元素都是int型別。scanf() 和 printf() 函式有一種格式化字串 %s 可以用來整體輸入輸出字元陣列,但是沒有特定的格式支援 int 陣列整體陣列輸出。
在c++中字元陣列和字串有什麼區別
2樓:匿名使用者
唯一的區別就是字串末尾有乙個'\0'
面字元陣列是沒有的.
char ch1="hello";//該串有6個字元,5個可見字元,因為是串,所以末尾自動加上'\0';共六個
char ch2=;//這樣寫就成了陣列.是確確實實的5個字元
3樓:匿名使用者
字串都是以'\0'結尾,字元陣列只是單個字元的集合,只要在字元陣列某處加上'\0',也可轉換為字串
c++中字元陣列和字串有什麼區別,使用的時候,還有儲存什麼的。
4樓:
事實上字串是形如"abcd",在c++裡面是const char*或者char const*這樣,而字元陣列卻不是這樣,型別是char*。"abcd"這樣的字串文字量儲存在字串文字量裡面,而char或char*只算是乙個數字(數碼),下面是main.cpp檔案的例子:
#include
int main()
;std::printf("abcd");
std::printf("%s",v);
return "abcd"==&v[0];
}這一段**,在gcc下生成的彙編**是:
.file "main.cpp"
.def ___main; .scl 2; .type 32; .endef
.section .rdata,"dr"
lc0:
.ascii "abcd\0"
lc1:
.ascii "%s\0"
.section .text.startup,"x"
.globl _main
.def _main; .scl 2; .type 32; .endef
_main:
lfb9:
.cfi_startproc
pushl %ebp
.cfi_def_cfa_offset 8
.cfi_offset 5, -8
movl %esp, %ebp
.cfi_def_cfa_register 5
andl $-16, %esp
subl $32, %esp
call ___main
movb $97, 27(%esp)
movb $98, 28(%esp)
movb $99, 29(%esp)
movb $100, 30(%esp)
movb $0, 31(%esp)
movl $lc0, (%esp)
call _printf
leal 27(%esp), %eax
movl %eax, 4(%esp)
movl $lc1, (%esp)
call _printf
xorl %eax, %eax
leave
.cfi_restore 5
.cfi_def_cfa 4, 4
ret.cfi_endproc
lfe9:
.def _printf; .scl 2; .type 32; .endef
很明顯,"abcd"和char v = ;是完全不同的,這裡面乙個char如'a'實際的碼在系統裡面在影射到特定的文字量去。
字串放在字串文字量儲布區裡面,在main()結束後才會被銷毀。這個是可以確定的。
但是我不是做彙編的,不知道最精確的說法;但從上面的結果來看,很顯然
movb $97, 27(%esp)
movb $98, 28(%esp)
movb $99, 29(%esp)
movb $100, 30(%esp)
movb $0, 31(%esp)
就是把數字乙個乙個在放到對應的位址上去
而"abcd"則處理為.ascii "%s\0"這一分區段上去
5樓:
字元陣列 char a[100]; 可以隨便你對元素賦值常量字串 char* a = 'abcde'; 不能隨便賦值動態分配字串
char *a = malloc(100);
strncpy(a, 'abcd', 0);
拷貝了4個字元
6樓:
唯一的區別就是字串末尾有乙個'\0'作為結束標誌;字元陣列是沒有的.
簡單例子:
char ch1="hello";//該串有6個字元,5個可見字元,因為是串,所以末尾自動加上'\0';共六個
char ch2=;//這樣寫就成了陣列.是確確實實的5個字元
c語言字串陣列逆序問題,C語言字串陣列逆序問題
第乙個問題 字串陣列的長度不包括最後的 0 第二處問題 1 把 for i 0 str1 i 0 i 後面加上乙個分號 2 把for i 0 str1 i 0 i 後面的花括號去掉 3 再把 puts str1 前面的花括號去掉就可以了 程式如下 include stdio.h int main c...
C語言字串陣列
不是的,printf裡 s是通過後面的name定址到該記憶體單元,然後從該記憶體單元開始讀取資料,知道 0 字元結束。所以會把你輸入的東西輸出 是的,但是 s的含義是,把從這個位址開始的內容當作ascii碼依次輸出來,直到碰到 0 就是一種機械的做法 比如 int a printf s a 會輸出a...
c 中字元陣列,如何轉成字串啊
如果你想把一個字串變成陣列,你只需要將字串初始化為陣列變數的值即可。例如 char c 10 this is 在c 裡字串在記憶體的儲存方式就是按字串陣列的形式儲存的,所以不用轉換!用cstring的getbuffer函式返回一個存放字元的頭指標,用一個char 來接受他,然後用下標操作就可以了。例...