今天上课的时候老师讲了指针 正好把我之前寒假时候 自己看的一些疑问 给解决了一下 所以索性写个博客记录一下 这样 日后 不清楚了 还可以看一下 由于没写什么大纲 所以 就直接写了 有可能过程会有一些混乱
指针 指针是什么 指针其实就是一个指向目标地址的一个东西 在c语言中 指针 *p 用星号来表示 所以一般我们指针设定就是 int *p=a; 这个的意思就是把 a的地址赋给指针 指针自身的值 也就是p 就是位置 *p就是目标位置的数据 简单来说 *p其实就是a 接下来就是一些平时指针的一些形式吧 这里说的主要就是 指针和数组之间的关系 简要的挑重点说一下 首先是一维数组 int a[10]; int *p=a; 一维数组直接这样就可以了 这里指针指的就是数组的第一个的位置 二维数组就有一些不一样了 还是像之前一样的 int a[10]; 这里我们如果还是像之前那样的话就错了 这里我们应该这样定义 int *p=a[0]; 为什么呢 因为在二维数组里面 这里的a 代表的就是一整行 但是我们在定义的时候 定义指针是定义了指向第一个 还有一种办法就是可以把指针设定成指向一整行 int (*p)[4]; 比如说一行有四个 这样指针就是可以 这样 p=a; 了
以前会把 int *p[5] 和 int (*p)[5] 这两个搞混 但是今天就理解了 我自己的一个方法就是我们直接看括号 第一个没有括号 然后和星号结合 那么就是一个指针 所以第一个就是一个指针数组 数组里面的每个元素都是指向int 的指针 第二个就不一样了 第二个有括号 所以指针就是 *p 这里的意思就是指针指向数组 数组的一行 一行有五个
第二个就是指针和函数之间的关系 有两种第一种就是 int *p(int,int); 第二种就是 int (*p)(int,int); 一种一种来 第一种就是 没有括号 好那么整个都是指针 所以这是一个指针函数 应该可以这么说吧233 然后这个函数返回的数值是指针类型的 第二种就是 这个指针p是指向这个函数的 然后这个函数的返回值是int类型的 这两种的区别就是 返回的数值 一种是指针 一种是 int类型