黑马程序员技术交流社区

标题: 字符串指针问题 [打印本页]

作者: sheji_56    时间: 2015-3-15 15:25
标题: 字符串指针问题

为什么p.name可以直接赋值,当做常量字符串肯定不是对的,但看着就是常量字符串?

提出来分开写肯定是错的,哪位大神能讲通原理。。。。。。

作者: 朱士龙    时间: 2015-3-15 15:41
char *str; 定义的是一个字符指针,只有一个字节。而你后边赋值给的是字符串,具有5个字节,因此会报错。如果你改成 char *str ; *str = 'a'; 或者改为char *str[5]; *str = "jack"; 就可以了。
作者: 魔主    时间: 2015-3-15 16:06
1.定义结构体一般形式:struct 结构体名{成员列表}变量名列表;  或者像你那样分两步
结构变量成员一般形式:结构变量名.成员名       中间的点“.”是成员运算符
2.char *str2;     str2="rose" 表示把字符串中第一个字符地址赋值给指针变量str2,str前面不能加*
我只是个oc都没看完的菜鸟,错了请谅解   
建议买本书,看看视频看看书
作者: sheji_56    时间: 2015-3-15 16:12
朱士龙 发表于 2015-3-15 15:41
char *str; 定义的是一个字符指针,只有一个字节。而你后边赋值给的是字符串,具有5个字节,因此会报错。如 ...

char *str;
str="rose";
str="jack";
这样就对了  
作者: sheji_56    时间: 2015-3-15 16:14
魔主 发表于 2015-3-15 16:06
1.定义结构体一般形式:struct 结构体名{成员列表}变量名列表;  或者像你那样分两步
结构变量成员一般形 ...

int *p;
*p=12;
*p=13;
我被这种思想给弄混乱了
作者: xiezhongmin    时间: 2015-3-15 17:35
char *str2;     *str2="rose"小妹你加星是啥意思啊,计算是其他类型指针你没有给它赋初值,难道你加个星去范围它指向的对应空间,你都没给它地址,你加个星去访问它修改它的类容?而且以这种式创建的字符串是放在常量区的不可以修改
作者: huhanze    时间: 2015-3-15 20:07
char *str ; 是定义了一个指向char 类型的指针变量,  * 是声明了该变量是一个指针类型,定义的时候必须加 * 来表明该变量是指针变量。使用的时候
作者: huhanze    时间: 2015-3-15 20:17
char *str ; 是定义了一个指向char 类型的指针变量,  * 是声明了该变量是一个指针类型,定义的时候必须加 * 来表明该变量是指针变量。使用的时候则确定str的指向 str = "Rose" 指向的是 "Rose"的起始地址  *str 是当前str所指向的内存存储的值。 str 的右值就是地址  *str 就是这个地址内存中的值。 char *str = "Rose"; 等价于
char *str;
str = "Rose";

指针这一块很烦人 ,多理解,多思考,指针跟数组联系很紧密,如上面的其实就是分配了一个字符数组 ,里面存储的内容是Rose和一个结束标志'\0' ,然后str指向这个数组




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2