Spending my time on high level languages it suddenly occurred to me that I did not know the difference between a Char Array and a String. I think they are the same thing but not sure. Is there a difference? Is it just a Char Array with some abstraction?
相关问题
- How to introduce AOP into productive software deve
- What is the difference between Dataflow programmin
- What is the opposite of OOP? [closed]
- What is the difference between procedural programm
- In which layer should I join 2 entities together?
相关文章
- How to introduce AOP into productive software deve
- What is the difference between Dataflow programmin
- What is the opposite of OOP? [closed]
- What is the difference between procedural programm
- C ++技术:类型擦除与纯多态性(C++ Techniques: Type-Erasure vs.
- In which layer should I join 2 entities together?
- 混入与性状混入与性状(Mixins vs. Traits)
- Practical uses of OOP
In C these are almost the same, though a string will have an additional null character at the end.
In other languages (Java, C# etc), a string is an object, whereas a character array is an array of ... chars (which are primitive data types).
Normally, strings are implemented with character arrays.
a character array is simply an array of characters
a string is data structure that uses an array of characters
some string representations use a null-terminator (like C), others use a length prefix
A string is the character array terminated by null character ‘\0’
It depends on the language. In C-ish languages, they are pretty much synonomous. You could claim the difference is that "strings" have an implicit terminating nul, but that would be splitting hairs.
Fortran is the other extreme. There character arrays and character strings are entirely different types, with different operations available for them.
String
is aclass
in java. So it has attributes e.g.length
. So when you ask for the size of string it simply returns that instead of computing the value each time. It also other methods e.g.indexOf
,substring
, etc to make life easy so you don't have to do that yourself.A String is an abstraction, but of a sequence of characters. It says nothing of implementation. If you wanted to create a String implementation based on a linked list of characters there's nothing stopping you.
In a language such as C, there is very little difference - just that a c string is a null-terminated series of characters at sequential addresses, that is generally accessed through a pointer.
In an OOP language, a String will be an object of some String class. This will probably hold the data in a character array internally, but you don't need to know that. A character array can only be a simple array, but a String class can provide many operations (substrings, regex, etc) on strings if the implementer decides to.