C语言指针的问题,新手。 寻求指导

发布于 科技 2024-08-22
6个回答
  1. 匿名用户2024-02-01

    char *name;由于优先级高于 *,所以 first name 是一个数组,它的元素是 char *,即 name 是指向 char 类型的指针数组,name[0] 是指向 char 类型的指针"one"String,同样 name[1] 也是 char 类型的指针,他指向它"two",而 char **p 表示 p 是指向指针的指针,因此。

    显然 p=name[1] 不是 true,两个数据类型都不匹配 p 是指向指针的指针,而 name[1] 是指向 char 类型的指针。

    printf("%s",name[1]) 为什么不用 printf("%s",name+1),对于这个问题,也是数据类型不匹配,printf("%s",name[1]) 可以更改为 printf("%s",*(name+1));name[1] 其实可以写成一个指针引用,即 *(name+1),这两个方法是等价的,name 其实只是数组的名称,也就是数组的第一个地址,它的元素是指向字符串的指针。

    希望对你有所帮助!

  2. 匿名用户2024-01-31

    (name + 1) 与 name[1] 相同,用于获取内容。

    但名字就是地址。

  3. 匿名用户2024-01-30

    name+1 是地址。

    name[1] 是一个字符串值。

  4. 匿名用户2024-01-29

    name+1 的类型为 char **,name[1] 的类型为 char *,类型不同。

  5. 匿名用户2024-01-28

    name+1 是指向指针的指针。

    name[1] 是一个指针。

    不是一个类型。

  6. 匿名用户2024-01-27

    第一个问题显然是答案。

    第二个问题显然是ACD数组的越界错误 正确答案是b,第三个问题a是x[3]是3,毫无疑问,b p1是x[3]的地址 ++是x[3]的地址 ++是x[2]的地址也是3 c p1是x[2]的地址, 下面的++是表达式的最后一次执行,不用括号,d也是x[3]的地址,++显然是正确的。

    所以只有 c 是错的,答案是 c

    这个问题库的正确答案是无法给出的,显然不值得你练习,建议换个地方做题第二个问题太明显了,数组10的大小最多下标9,而这个问题的答案是错误的,可见提问者的水平。第一个问题无论如何都离不开c和d,答案其实是b,对智商的侮辱太大了。不要打扰它,如果你想学习指针,请阅读 C-pointers and traps 一书。

相关回答
17个回答2024-08-22

p5[1] 取第二个字符的地址,即'b',打印结果为b,取p5[0]+1"def",打印结果为 def >>>More

5个回答2024-08-22

字符串是保存字符串的字符串指针变量"i love china!"。 >>>More

7个回答2024-08-22

a) int *b[ ] 错误,指针必须指向受控的已知内存地址。 >>>More

14个回答2024-08-22

这其实是可以理解的。

只需将 %s、%c、%p 放在一起即可。 >>>More

12个回答2024-08-22

当然,如果将 p 替换为 int 指针,p++ 会一次跳转 4 个字符地址。 >>>More