牙牙乐 发表于 2020-3-9 17:21:10

关于指针的问题

看完视频想做个总结,但是不知道对不对
指针就是指向一个地址,这个地址存放常量
指针数组就是指向一个数组 ,这个数组里面都是指针
数组指针就是直接指向一个数组,数组常量元素不是指针,
看完视频想对于自己的理解不知道对不对,请各位大哥给我分析一下

带不带*代表的分别是什么意思,
#include <stdio.h>

int main()
{
      int temp = {1, 2, 3, 4, 5};
      int (*p2) = &temp;
      int i;

      for (i = 0; i < 5; i++)
      {
                printf("%d\n", *(*p2 + i));
      }

      return 0;
}

$ gcc test4.c && ./a.out
1
2
3
4
5

就是这个*P是不是代表着指向这个数组的第一位数1但是不显示这个第一位数,*(*p)才是提取显示这个数组的各个元素
求各位大佬解答下

就是要努力呀 发表于 2020-3-9 17:38:58

指针存放地址,这个地址对应的内存空间又存放有其他数据
指针数组就是一个数组,它的每一个元素都是一个指针
数组指针是一个指针,指向一个数组

(*p) = &temp;(数组指针指向一维数组要加& 二维数组不用&)
通过指针法访问数组以二维数组为列是这样的*(*(p + i) + j) 表示取temp;
三维数组就是*(*(*p + i ) + j ) + k)表示取temp
现在temp是一个一位数组他的i就是0
也就是*(*(p + 0) + j)
就是*(*p + j) 即取temp

就是要努力呀 发表于 2020-3-9 17:40:36

就是要努力呀 发表于 2020-3-9 17:38
指针存放地址,这个地址对应的内存空间又存放有其他数据
指针数组就是一个数组,它的每一个元素都是一个指 ...

好好理解一下 你上面写的概念一个都不对

就是要努力呀 发表于 2020-3-9 17:42:15

再定义一个变量的时候 * 表示定义一个指针变量
再其他情况下 * 表示取值 取这个指针存放的地址对应的内存空间里的数据

牙牙乐 发表于 2020-3-9 18:11:15

就是要努力呀 发表于 2020-3-9 17:38
指针存放地址,这个地址对应的内存空间又存放有其他数据
指针数组就是一个数组,它的每一个元素都是一个指 ...

额 明白了明白了 还好来问了   谢谢大佬{:10_275:}
页: [1]
查看完整版本: 关于指针的问题