鱼C论坛

 找回密码
 立即注册
查看: 2707|回复: 6

[已解决]指向字符数组的指针

[复制链接]
发表于 2022-11-7 21:51:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
想问下大佬们 a不是已经是字符数组的地址了吗,为什么对它取址还能得到字符串呢?

#include <stdio.h>

int main()
{
        char a[9] = "Jack";
        printf("%s\n",&a);
}
最佳答案
2022-11-7 22:01:42
          a 是常量指针(a 不接受赋值),并不是一个变量,所以,& a 的值还是它自己本身。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-11-7 22:01:42 | 显示全部楼层    本楼为最佳答案   
          a 是常量指针(a 不接受赋值),并不是一个变量,所以,& a 的值还是它自己本身。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-7 22:16:01 | 显示全部楼层
jackz007 发表于 2022-11-7 22:01
a 是常量指针(a 不接受赋值),并不是一个变量,所以,& a 的值还是它自己本身。

长知识了,我只知道是常量指针,没想到常量指针取地址还是它自己本身
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-7 22:20:47 | 显示全部楼层
jackz007 发表于 2022-11-7 22:01
a 是常量指针(a 不接受赋值),并不是一个变量,所以,& a 的值还是它自己本身。

又是您 非常感谢大佬的帮助!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-9 21:59:12 From FishC Mobile | 显示全部楼层
本帖最后由 xiaotubie 于 2022-11-9 22:23 编辑

我只能说一楼的回答是完全错误的。首先a不是地址,iso国际标准组织的c语言标准中定义了数组a在大多数表达式中会转换为指向数组第一个元素的指针,指针的值是数组第一个元素的地址,如果遇到&和sizeof则不会发生转换,也就是还代表数组本身;而这里&a中的a恰恰是这种特殊的情况,表示数组本身,因此&a表示指向数组的指针,它的值是数组的地址,跟常量没半毛钱关系。
int  n=a   编译器提示错误:int* 类型不能转换为int类型。这里a是int*类型,表示指向数组第一个元素的指针
int n=&a   编译器提示错误:int (*)[]  类型不能转换为int类型。这里&a类型是一个数组指针,而a解释为数组

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
人造人 + 5 + 5 + 3 无条件支持楼主!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-11-9 22:49:37 From FishC Mobile | 显示全部楼层
桃花飞舞 发表于 2022-11-7 22:16
长知识了,我只知道是常量指针,没想到常量指针取地址还是它自己本身

你的理解有误
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-9 22:57:26 | 显示全部楼层
本帖最后由 桃花飞舞 于 2022-11-9 23:05 编辑


对,你的回答是正确的,谢谢了,我还觉得奇怪,怎么&a还是它本身,我完全被一楼带歪了。还是要个正确的,不然错误满天飞。&a,这时候a是数组类型的变量,&a是指整个数组的起始地址,只不过恰好和&a[0]相等而已,意义大相近庭,&a+1就越界,正好可以证明。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-17 08:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表