| | |
The Char Data Type with 1 vs 2 Dimensional Array
Please support our C++ advertiser: Intel Parallel Studio Home
Thread Solved |
•
•
Join Date: Jun 2008
Posts: 32
Reputation:
Solved Threads: 0
Hey, here are two codes and with one slight difference they do different things
CODE 1
EXAMPLE OUTPUT:
CODE 2
EXAMPLE OUTPUT:
How is that occurring, by adding an extra dimension to array it takes both words. What is going on....lol
Thanks!
CODE 1
C++ Syntax (Toggle Plain Text)
#include<iostream> using namespace std; int main() { char array[2]; int i=0; while (i<2) { cin>>array[i]; i++; } cout<<array[0]<<' '<<array[1]; }
C++ Syntax (Toggle Plain Text)
two words t w
CODE 2
C++ Syntax (Toggle Plain Text)
#include<iostream> using namespace std; int main() { char array[2][100]; int i=0; while (i<2) { cin>>array[i]; i++; } cout<<array[0]<<' '<<array[1]; }
C++ Syntax (Toggle Plain Text)
two words two words
How is that occurring, by adding an extra dimension to array it takes both words. What is going on....lol
Thanks!
>How is that occurring, by adding an extra dimension to array it takes both words.
It helps to know that the native string type in C++ is actually an array of char, and cin's >> operator is pretty smart about knowing what types you give it. When array[i] is an array of char,
It helps to know that the native string type in C++ is actually an array of char, and cin's >> operator is pretty smart about knowing what types you give it. When array[i] is an array of char,
cin>>array[i]; will read a word into it. when array[i] is a single char, cin>>array[i]; will read a single character into it. I'm here to prove you wrong.
•
•
Join Date: Jun 2008
Posts: 32
Reputation:
Solved Threads: 0
is it possible to think of it as a matrix?
for example
Isn't this what we are forming
If we do
and we input the word: "WHAT"
how is that being placed in to the matrix I drew.
To display the word I played around and found I can do this:
But I thought the maximum it can go to was array [1][1] ?? So how can those arrays be defined.
I mean the only combinations I thought were possible according to a tutorial I read were
array[0][0]
array[0][1]
array[1][0]
array[1][1]
for example
C++ Syntax (Toggle Plain Text)
char array[2][2];
Isn't this what we are forming
C++ Syntax (Toggle Plain Text)
0 1 0 1
If we do
C++ Syntax (Toggle Plain Text)
cin>> array[0]
how is that being placed in to the matrix I drew.
To display the word I played around and found I can do this:
C++ Syntax (Toggle Plain Text)
cout<< array[0][0]<<array[0][1]<<array[0][2]<<array[0][3]
I mean the only combinations I thought were possible according to a tutorial I read were
array[0][0]
array[0][1]
array[1][0]
array[1][1]
Last edited by salman213; Jun 20th, 2008 at 5:53 pm.
•
•
Join Date: Jan 2008
Posts: 3,828
Reputation:
Solved Threads: 501
•
•
•
•
is it possible to think of it as a matrix?
for example
C++ Syntax (Toggle Plain Text)
char array[2][2];
Isn't this what we are forming
C++ Syntax (Toggle Plain Text)
0 1 0 1
If we do
and we input the word: "WHAT"C++ Syntax (Toggle Plain Text)
cin>> array[0]
how is that being placed in to the matrix I drew.
To display the word I played around and found I can do this:
But I thought the maximum it can go to was array [1][1] ?? So how can those arrays be defined.C++ Syntax (Toggle Plain Text)
cout<< array[0][0]<<array[0][1]<<array[0][2]<<array[0][3]
I mean the only combinations I thought were possible according to a tutorial I read were
array[0][0]
array[0][1]
array[1][0]
array[1][1]
When the compiler saw this line:
C++ Syntax (Toggle Plain Text)
char array[2][2];
it set aside memory for 2 x 2 = 4 bytes of contiguous memory. Let's say it stored array[0][0] at the following address in memory:
C++ Syntax (Toggle Plain Text)
0xaa0000
The four characters would be stored at the following addresses:
C++ Syntax (Toggle Plain Text)
array[0][0] 0xaa0000 array[0][1] 0xaa0001 array[1][0] 0xaa0002 array[1][1] 0xaa0003
If you are referring to the element array[i][j], the computer figures out which address in memory is being referred to by this mathematical equation:
C++ Syntax (Toggle Plain Text)
address = address of array[0][0] + offset
where offset is calculated as:
C++ Syntax (Toggle Plain Text)
(i times number of rows) + j
In your case the number of rows = 2, so offset is:
C++ Syntax (Toggle Plain Text)
offset = 2i + j
So in the case of array[0][3], i = 0 and j = 3, so:
C++ Syntax (Toggle Plain Text)
offset = 0 * 2 + 3 = 3
The address of array[0][3] is thus:
C++ Syntax (Toggle Plain Text)
0xaa0000 + 3 = 0xaa0003
which is the address of array[1][1], so array[1][1] and array[0][3] are equivalent here, so when you displayed array[0][3], you were really displaying what was stored at array[1][1], which is 'T'.
However, even though you can get away with it, it's probably not a great habit to get into and you should probably only reference the elements array[0][0], array[0][1], array[1][0], and array[1][1].
![]() |
Similar Threads
- Safe Array (C++)
- Pointers (archived tutorial) (C++)
- 2 array (C++)
- whats the concept of 2d n 3d array (C++)
- How to extract words from char type string (C++)
- help...one-dimensional array averaging program (C++)
- Pointers (C++)
- Arrays (C++)
- How do I create a program using an Array ? (C++)
Other Threads in the C++ Forum
- Previous Thread: Matrix sum with returning array function
- Next Thread: MFC -- or "cWinThreads hate me"
| Thread Tools | Search this Thread |
api array arrays based beginner binary bitmap c++ c/c++ calculator char char* class classes code coding compile compiler console conversion convert count data database delete deploy developer dll download dynamiccharacterarray email encryption error file forms fstream function functions game generator getline givemetehcodez graph gui homeworkhelp homeworkhelper iamthwee ifstream input int java lib list loop looping loops map math matrix memory multiple news node number numbertoword output parameter pointer problem program programming project proxy python random read recursion recursive reference rpg sorting string strings temperature template text text-file tree url variable vector video visual visualstudio win32 windows winsock word wordfrequency wxwidgets







