c - 数组作为数组和指针 C 传递

标签 c arrays pointers

为什么这个程序输出pq?将数组作为指针传递或作为数组传递有什么区别。

 #include<stdio.h>

  void fun(char i[]){
   printf("%c,%c", i[1],i[2]);
  }
  void fun2(char *i){
    printf("\n%c,%c", i,i+1);
  }
  int main(){
    char ar[] = {"Aba"};   
    fun(ar);
    fun2(ar);
    return 0;
  }

输出:

  b,a
  p,q

最佳答案

您正在打印第二个函数中指针地址的 ASCII 转换。您必须通过 *i*(i+1) 取消引用指针。

关于c - 数组作为数组和指针 C 传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39183542/

相关文章:

ios - 在 IOS 中使用 PJSIP 注册远程 VOIP 服务器

c - MPI多线程中的vfork VS fork

c++ - 我可以以这种方式将数组转换为指针并返回指向常量的指针吗?

c++ - 引用单例是在栈上还是在堆上?

c - 我无法理解第二个 printf 打印的内容

c - 为什么fork程序printf执行时间更长

c++ - 从 char 到 const* char 的无效转换,代码有什么问题?

arrays - list 不可用时的情况

c - 如何将指向结构的指针设置为 NULL

C - 初始化结构数组