小弟看书,在Programming in Objective C的296页
Constant Character Strings and Pointers这一个小节,看到这样一个问题很疑惑,求解char *textPtr;
textPtr = “A character string.”;
以上可行
char text[80];
text = “This is not valid.”;
以上不可行
char text[80] = “This is okay.”;以上又可行我能理解textPtr是指向这个C风格字串的首地址,但是不能理解为什么(text = “This is not valid.”;)是错的。难道是因为C风格字串默认constant,不能用来给非const赋值,只能用来初始化?感激不尽

解决方案 »

  1.   

    text = “This is not valid.”;这是给数组的首地址赋值吗?
    char text[80] = “This is okay.”;这个是初始化。c99就是这么规定的。GCC编译器应该是通用的
      

  2.   

    搜到一篇文章,感觉说的比较清楚。
    http://cache.baidu.com/c?m=9d78d513d9d430dc4f99e2697b13c011124381132ba6d1020ba48448e2732d455016e9ac51250773a3d13b275fa0131aacb22173441e3df2de8d9f4aaaeace7871d57275671cf1104f8c04ee96047f9a73925ceba804b4faa168c8ea85cedf5651c04e07719df08a470314c16bf41631f4a6ee1253004e&p=c3769a41999615fd08e2977c064798&user=baidu&fm=sc&query=%CA%FD%D7%E9%C3%FB+%D6%B8%D5%EB&qid=8a87b6d50edd27ff&p1=5
      

  3.   

    char text[80];
    text = “This is not valid.”;
    作为数组存储 必须要有存储的下标;
    而char text[80]="this is oK"这个其实是做了两个动作 就是定义一个数组变量并且初始化数组.
    第一句话如果这样写 应该是对的
    char text[80];
    text[0] = “This is not valid.”;
    这样就会是对的.
      

  4.   

    我终于弄明白了char text[80];
    text = “1234  qwe”;其实这句话是有问题的。text这个时候只是代表一个 地址常量,而不是一个指针变量如果要给text赋值的话,右边应该是一个装有 地址的变量或者   地址常量楼上给的那个网站,很有用。我也学习了
      

  5.   

    char text[80];
    的text是常量。