#include
#include
#include
using namespace std;
map<
char
,int
> mp;
void
cbchar
(char
* cc,
int* bb,string &a)
int l=0;
for(map<
char
,int
>
::iterator it = mp.
begin()
;it!=mp.
end(
);it++)}
intmain()
for(
int i=
0;c[i]
;++i)
cout<' '<' '
int i=
0;c[i]
;++i)
}
輸入qqqqq
輸出:
qqqqq
3130 q:5:
0 i:
4754240
這就很奇葩了,我那個陣列c怎麼是三個元素???
然後我進行測試:
#include
#include
#include
using namespace std;
map<
char
,int
> mp;
void
cbchar
(char
* cc,
int* bb,string &a)
int l=0;
cout<<
"map的大小:"
; cout
char
,int
>
::iterator it = mp.
begin()
;it!=mp.
end(
);it++
)int len=
strlen
(cc)
; cout<<
"cc陣列裡面的字元個數:"
int i=
0;i++i)
}int
main()
}/*qqqqq
c陣列之前的元素個數:3
map的大小:1
map裡面的值:q:5
map遍歷次數:1
cc陣列裡面的字元個數:3
0:q1:
2:pq:5
?*/
原來直接定義乙個字元陣列,但是不賦值,它裡面還有元素,並不是說裡面直接就是乙個』\0』。
我這個裡面c就是初始什麼都不賦值時侯,竟然有三個元素。。。臥槽寫這麼長時間c語言,我才發現這個bug。
看來我得回爐重造了。。。
那麼解決這個bug,就是在初始化時候加個花括號。char c[100]={};
#include
#include
#include
using namespace std;
map<
char
,int
> mp;
void
cbchar
(char
* cc,
int* bb,string &a)
int l=0;
cout<<
"map的大小:"
; cout
char
,int
>
::iterator it = mp.
begin()
;it!=mp.
end(
);it++
)int len=
strlen
(cc)
; cout<<
"cc陣列裡面的字元個數:"
<}int
main()
; cout<<
"c陣列之前的元素個數:"
<<
strlen
(c)
(c,b,a)
;for
(int i=
0;c[i]
;++i)}/*
qqqqq
c陣列之前的元素個數:0
map的大小:1
map裡面的值:q:5
map遍歷次數:1
cc陣列裡面的字元個數:1
q:5*/
C語言字元陣列的初始化
1 字元陣列的定義與初始化 字元陣列的初始化,最容易理解的方式就是逐個字元賦給陣列中各元素。char str 10 即把10個字元分別賦給str 0 到str 9 10個元素 如果花括號中提供的字元個數大於陣列長度,則按語法錯誤處理 若小於陣列長度,則只將這些字元陣列中前面那些元素,其餘的元素自動定...
C語言字元陣列的初始化
1 字元陣列的定義與初始化 字元陣列的初始化,最容易理解的方式就是逐個字元賦給陣列中各元素。cpp view plain copy char str 10 即把10個字元分別賦給str 0 到str 9 10個元素 如果花括號中提供的字元個數大於陣列長度,則按語法錯誤處理 若小於陣列長度,則只將這些...
C語言字元陣列的初始化
1 字元陣列的定義與初始化 字元陣列的初始化,最容易理解的方式就是逐個字元賦給陣列中各元素。char str 10 即把10個字元分別賦給str 0 到str 9 10個元素 如果花括號中提供的字元個數大於陣列長度,則按語法錯誤處理 若小於陣列長度,則只將這些字元陣列中前面那些元素,其餘的元素自動定...