作者Xphenomenon (啦 )
看板C_and_CPP
标题[问题] C 这样的 assign 是合法的吗?
时间Tue Feb 24 16:52:42 2009
struct TEST {
const char *str1;
const char *str2;
};
int main(void) {
struct TEST ob;
ob.str1 = "hello"
ob.str2 = "world"
return 0;
}
ob.str1 是一个 const char *,但是我将他指向给某一固定字串,我知道在宣告的时候
是合法的:
const char *str3 = "hello, world";
但是 ob.str1 = "hello" 应该不是合法的,对吧?因为 str1 只是一个指标,应该先配
置一固定记忆体给他之後,再透过如 strcpy() 来进行配置。不知道我这样的想法正不
正确。看 code 的时候,常常会遇到类似上面的写法。
麻烦大大为我解答一下,谢谢~
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 210.202.86.252
1F:→ pponywong:你的想法是对的..要先malloc在strcpy 02/24 16:56
2F:推 ledia:直接 = "hello" 也是对的, 只是它唯读 02/24 17:21
3F:→ ledia:指标可以指到某个 constant literal 上, 也可以经由配置记 02/24 17:22
4F:→ ledia:忆体之後再赋值, 甚至可以让它指向 static array 使用该空间 02/24 17:22
5F:推 zlw:合法是指?编译是可以通过的。ob.str1是指标,记忆体位址可以 02/24 17:29
6F:→ zlw:随你高兴指定,只不过指标所指的东西,被认定为唯读而已 02/24 17:29
7F:→ zlw:ob.str1="Hello"这种写法,很可能出现的就是拿来当参数传值 02/24 17:31
8F:→ zlw:如果是这种用法就不必做malloc了 02/24 17:31
9F:→ Xphenomenon:感谢! 02/25 21:44