社区
新手乐园
帖子详情
问一个很简单的关于指针的问题
fishkid
2008-09-12 04:36:15
如果是int x = 3; int * y的话。如果赋值应该是 y = &x,也就是y其实本身是个地址。
但如果是 char *x; 再赋值的话,则是 x = "abc" ,难道这个时候x也是地址吗?这个怎么讲?你再*x的话那代表什么呢?
...全文
147
16
打赏
收藏
问一个很简单的关于指针的问题
如果是int x = 3; int * y的话。如果赋值应该是 y = &x,也就是y其实本身是个地址。 但如果是 char *x; 再赋值的话,则是 x = "abc" ,难道这个时候x也是地址吗?这个怎么讲?你再*x的话那代表什么呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
UncleQiong
2008-09-14
打赏
举报
回复
相信7楼的已经说得很详细了哦。。。
mocherson
2008-09-14
打赏
举报
回复
char *x;
x="abc";
说明字符指针x指向的是字符串“abc”的首地址,
你取x的内容的话(即*x)那自然是取出它所指向的字符‘a’了。
7楼的代码就说明了这个问题。
mikelu2008
2008-09-14
打赏
举报
回复
[Quote=引用 7 楼 mifeixq 的回复:]
这要谈到指针和数组的异同性了
看char *str = "123";
也就是
char *str;
str="123";
怎么可能把字符串给一个地址呢? 看测试代码
#include <stdio.h>
int main()
{
char *str ;
str = "123";
printf("%s\n", str);
return 0;
}
事实上,结果真就输出123了…… 看来这里有说法
"123" --->字符串常量,存放在内存常量区(.text区)
那么str究竟是什么的地址呢?
测试代码
#include <stdio.h…
[/Quote]
向7楼好好学习……
机智的呆呆
2008-09-13
打赏
举报
回复
*x代表*(x+0)即x[0]
vbcpascal
2008-09-13
打赏
举报
回复
回二楼,这"abc"是个字符串字面值,即C风格字符串,也是个const char的数组,
x="abc"使x指向这数组的第一个元素('a'),所以cout<<*x输出的是a
雪鹰翔天
2008-09-12
打赏
举报
回复
程序只是把字符串当成了字符的数组而已,x指针指向此数组的首地址,*x也是数组的第一个元素。
mifeixq
2008-09-12
打赏
举报
回复
这要谈到指针和数组的异同性了
看char *str = "123";
也就是
char *str;
str="123";
怎么可能把字符串给一个地址呢? 看测试代码
#include <stdio.h>
int main()
{
char *str ;
str = "123";
printf("%s\n", str);
return 0;
}
事实上,结果真就输出123了…… 看来这里有说法
"123" --->字符串常量,存放在内存常量区(.text区)
那么str究竟是什么的地址呢?
测试代码
#include <stdio.h>
int main()
{
char *str ;
str = "123";
printf("%p\n", str);
return 0;
}
输出:0x8048470
继续测试
#include <stdio.h>
int main()
{
char *str ;
str = "123";
printf("%c\n", *str);
return 0;
}
输出:1 ,原来*str 是1,那么猜测 str 就是第一个字符的地址?看测试代码
#include <stdio.h>
int main()
{
char *str ;
str = "123";
printf("%p\n", &(*str));
return 0;
}
输出:0x8048470 , 真的是猜测的结果
----------------------------------------
结论:str 内存放字符串首地址……
Lucky1118
2008-09-12
打赏
举报
回复
* 有两种意思
char * x ; 这时候的*是指针定义,说明x是一个char指针
*x = a; 这时候 * 是间接运算符,是把x指向的地址放入a
liaoweixiaoyu
2008-09-12
打赏
举报
回复
指针指向字符串首地址,
talent123
2008-09-12
打赏
举报
回复
我的理解是 x指向"abc"这个字符串的首地址,*x对地址解引用得到'a'
zhshk
2008-09-12
打赏
举报
回复
*x 植为a;
x 的指向静态数据区地址。
其实char *x;x = "abc";
不准确,但编译器不会出错。准确的定义是:
const char *x="abc";
帅得不敢出门
2008-09-12
打赏
举报
回复
x 为const char* 的首地址 此例为"abc"
rivulettornado
2008-09-12
打赏
举报
回复
这里的x很特殊,比如说使用cout<<x;输出的就是这一个字符串。
binsir543
2008-09-12
打赏
举报
回复
代表a
devil_zuiai
2008-09-12
打赏
举报
回复
带*号的是指针,指针就是用于指向一个内存地址。
指针本身也有大小为4个字节。
double*,int*,char* 都是4个字节。
Justmeh
2008-09-12
打赏
举报
回复
[Quote=引用 7 楼 mifeixq 的回复:]
这要谈到指针和数组的异同性了
看char *str = "123";
也就是
char *str;
str="123";
怎么可能把字符串给一个地址呢? 看测试代码
#include <stdio.h>
int main()
{
char *str ;
str = "123";
printf("%s\n", str);
return 0;
}
事实上,结果真就输出123了…… 看来这里有说法
"123" --->字符串常量,存放在内存常量区(.text区)
那么str究竟是什么的地址呢?
测试代码
#include <stdio.h…
[/Quote]
很有说服信。
2小时精通C++智能
指针
教程中从最
简单
的例子入手,覆盖智能
指针
的常用技术点,并穿插实例程序。本篇讲解的技术点包括:共享
指针
、弱
指针
、唯一
指针
、自动
指针
等。本课程中涉及的所有软件和示例源码,均提供免费下载。
一个
指针
占几个字节?原理是什么呢?
一个
指针
占几个字节的
问
题
,感觉会C语言的同学都知道。但是在面试过程中,面了几个同学,不是答忘记了,就是两个、四个的瞎蒙。。。 那么,
一个
指针
到底占几个字节呢? 其实,这个
问
题
很
简单
,稍微上网一搜,你就...
C语言
指针
常见
问
题
汇总
那么怎么判断
一个
指针
变量是指向变量的
指针
,还是指向函数的
指针
变量呢?看变量名的后面有没有带有形参类型的圆括号,如果有就是指向函数的
指针
变量,即函数
指针
,如果没有就是指向变量的
指针
变量。函数
指针
没有++和...
【C语言】让你不再害怕
指针
——C
指针
详解(经典,非常详细)
要了解
指针
,多多少少会出现一些比较复杂的类型,所以我先介绍一下如何完全理解
一个
复杂类型,要理解复杂类型其实很
简单
,
一个
类型里会出现很多运算符,他们也像普通的表达式一样,有优先级,其优先级和运算优先级一样,...
C语言
指针
详解(经典,非常详细)
要了解
指针
,多多少少会出现一些比较复杂的类型,所以我先介绍一下如何完全理解
一个
复杂类型,要理解复杂类型其实很
简单
,
一个
类型里会出现很多运算符,他们也像普通的表达式一样,有优先级,其优先级和运算优先级一样,...
新手乐园
33,311
社区成员
41,784
社区内容
发帖
与我相关
我的任务
新手乐园
C/C++ 新手乐园
复制链接
扫一扫
分享
社区描述
C/C++ 新手乐园
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章