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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ting00 中级黑马   /  2014-6-21 15:02  /  1252 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 ting00 于 2014-6-22 10:16 编辑

昨天老师讲的指针只能存储的是地址,不能存储变量什么的,但是今天为什么能存字符串了呢?

char  *a = "abcde" ;    为什么?这是为什么?不矛盾吗?  朋友们?

评分

参与人数 1技术分 +1 收起 理由
傘が咲く + 1

查看全部评分

6 个回复

倒序浏览
指针是存储地址,char *a是把指针a指向了字符串“abcde”的首地址a的地址。然后输出的时候,程序根据指针找到入口端字符串首地址从a开始输出。直到遇见‘\0’结束,再比如int *p=1,表示*p指向1,p存放的是1的地址。

评分

参与人数 1技术分 +1 收起 理由
傘が咲く + 1

查看全部评分

回复 使用道具 举报
首先定义了一个char型的指针a,我们知道指针是用来存储地址的,char  *a = "abcde"其实就是将字符串"abcde"的首地址赋给了a,也就是'a'地址,指针a这里存放的不是所谓的字符串变量,希望楼主能想通,多看教程哈

评分

参与人数 1技术分 +1 收起 理由
傘が咲く + 1

查看全部评分

回复 使用道具 举报
楼上说的很对
回复 使用道具 举报
2楼,3楼已经说的很详细了
回复 使用道具 举报
字符串也存储在内存中,也有自己的地址,字符串首字符的地址就是字符串的地址,所以此时a指向字符串的首字符
回复 使用道具 举报
ting00 中级黑马 2014-6-22 10:15:48
7#
好的   谢谢大家的回答,我会努力的!!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马