作业帮 > 数学 > 作业

若已定义char s[10];则在下面表达式中不表示s[1]的地址是 .A)s+1 B)s++ C)&s[0]+1 D)

来源:学生作业帮 编辑:百度作业网作业帮 分类:数学作业 时间:2024/08/08 13:59:52
若已定义char s[10];则在下面表达式中不表示s[1]的地址是 .A)s+1 B)s++ C)&s[0]+1 D)&s[1]
若已定义char s[10];则在下面表达式中不表示s[1]的地址是 .
A)s+1 B)s++ C)&s[0]+1 D)&s[1]
为神马C错?
打错了 应该是为神马c是对的,那个+1不是应该在[ ]里面么?
若已定义char s[10];则在下面表达式中不表示s[1]的地址是 .A)s+1 B)s++ C)&s[0]+1 D)
错了因为数组名是常量不能自加 Cs[0]的地址再加一不就是s[1]的地址么?&s[0]+1=&s[1]
再问: s[0]的地址跟s[1]的地址不是相隔4么?不是应该+4么
再答: 不是的哦 你说的是变量在内存里存放占得字节 不同的变量之间是隔了本类型对应占得字节数 但这里是两个地址 上一个s[0]的地址 下面就是s[1]的地址了
再问: 就是因为char占的是1字节?
再答: 不是的丫 这跟char占几个字节没关系 如果你占得是4个字节的话 1234存的是s[0],5678存的是s[1],就说在内存里s[0],s[1]的地址隔了4个字节。。但是这里是&s[0]+1取出s[0]的地址再加一 这个一不是说的字节数 好比指针指向下一个地址 也就是s[1]的地址了