A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© sheji_56 中级黑马   /  2015-3-15 15:25  /  1209 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


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

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

7 个回复

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

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

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

指针这一块很烦人 ,多理解,多思考,指针跟数组联系很紧密,如上面的其实就是分配了一个字符数组 ,里面存储的内容是Rose和一个结束标志'\0' ,然后str指向这个数组
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马