We're a community of 1076K IT Pros here for help, advice, solutions, professional growth and fun. Join us!
1,075,585 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Start New Discussion Reply to this Discussion

pointer to char array

*ptr = 'hello world";

if we try to modify the content the result is undefined when i worked with gcc in unix.
But i can modify the content in Turbo c. How it worked i got confussed.

5
Contributors
8
Replies
1 Day
Discussion Span
2 Years Ago
Last Updated
9
Views
harish9
Newbie Poster
4 posts since Mar 2011
Reputation Points: 7
Solved Threads: 0
Skill Endorsements: 0

When you have a pointer defined like so

char *ptr = "hello world";

It creates a read only character pointer. If you require a char array that's writable then use.

char ptr[] = "hello world";
gerard4143
Nearly a Posting Maven
2,295 posts since Jan 2008
Reputation Points: 512
Solved Threads: 397
Skill Endorsements: 0

This is one of those things that the standards allow implementations to "do their own thing" on. A string literal may (or may not) be in read-only memory as a constant. So, gerard4143 is absolutely correct if you want to modify the contents of the string in a platform-neutral manner. Neither gcc nor Turbo are breaking the rules. It's just that the rules are flexible in such cases. Caveat Programmer! :-)

rubberman
Posting Maven
2,571 posts since Mar 2010
Reputation Points: 365
Solved Threads: 305
Skill Endorsements: 51

thanku for ur information. I know it is stored in read only memory and i also know that we can't alter a value but how it worked in Turbo C thats my question.

harish9
Newbie Poster
4 posts since Mar 2011
Reputation Points: 7
Solved Threads: 0
Skill Endorsements: 0

thanku for ur information. I know it is stored in read only memory and i also know that we can't alter a value but how it worked in Turbo C thats my question.

Why it worked in Turbo C, read Rubberman's post.

gerard4143
Nearly a Posting Maven
2,295 posts since Jan 2008
Reputation Points: 512
Solved Threads: 397
Skill Endorsements: 0

if we try to modify the content the result is undefined when i worked with gcc in unix.

Correction: the result is always undefined, regardless of compiler. Whether it "works" or not depends on how the compiler implements string literals and enforces modification. Even if it "works", you could still be creating a subtle error down the line.

The lesson to be learned is don't rely on undefined behavior.

Narue
Bad Cop
Team Colleague
15,460 posts since Sep 2004
Reputation Points: 6,483
Solved Threads: 1,407
Skill Endorsements: 53

I am not familiar this topic of C language but I have backgrounds on some basic from the language. I hope you can help me with this topic.

basic math test

quynyth
Newbie Poster
1 post since Mar 2011
Reputation Points: 10
Solved Threads: 0
Skill Endorsements: 0

I am not familiar this topic of C language but I have backgrounds on some basic from the language. I hope you can help me with this topic.

basic math test

What is this?

gerard4143
Nearly a Posting Maven
2,295 posts since Jan 2008
Reputation Points: 512
Solved Threads: 397
Skill Endorsements: 0

What is this?

Trolling I think.

rubberman
Posting Maven
2,571 posts since Mar 2010
Reputation Points: 365
Solved Threads: 305
Skill Endorsements: 51

This article has been dead for over three months: Start a new discussion instead

Post: Markdown Syntax: Formatting Help
 
You
 
© 2013 DaniWeb® LLC
Page rendered in 0.0756 seconds using 2.66MB