c语言指针

指针

指针的作用可以通过内存地址来控制变量,定义指针时*p = &变量名,指针会在计算机内存分配4个字节存放这个变量的首地址,*p叫指针变量

指针的用法

#include <stdio.h>
int main(){
  int a = 20;
  int *p;
  p = &a;
  *p = 25;
  printf("%d \n",a);
  return 0;
}

此时输出为25

把*p可以当作a进行赋值操作;

在数组中的用法:

#include <stdio.h>

void selectArrayMax1();

int a[] = {1,2,3,4,5,9};

int main(){
    selectArrayMax1(&a);
    return 0;
}

void selectArrayMax1(int *q){
     int size = sizeof(a) / sizeof(a[0]);
     int max = *q;
     int i;
     for (i = 0; i < size; q++,i++)
     {
        if(max < *q)
            max = *q;
     }
     printf("max %d \n",max);
}

这里的q++ 是数组地址加1但不是普通的在内存地址上加个一而已,这里的加一是数组内存地址加4个字节也就是首地址加4个字节,q默认为a[0]的地址,加一也就是a数组下标加1为a[1];for循环比大小最后的结果是max 9。

#include <stdio.h>
const int MAX = 3;
int main ()
{
   int  var[] = {10, 100, 200};
   int  i, *ptr;
   /* 指针中的数组地址 */
   ptr = var;
   for ( i = 0; i < MAX; i++)
   {
 
      printf("存储地址:var[%d] = %x\n", i, ptr );
      printf("存储值:var[%d] = %d\n", i, *ptr );
 
      /* 移动到下一个位置 */
      ptr++;
   }
   return 0;
}

输出结果:
存储地址:var[0] = bf882b30

存储值:var[0] = 10

存储地址:of var[1] = bf882b34

存储值: var[1] = 100

存储地址:of var[2] = bf882b38

存储值:var[2] = 200

这里的ptr = var如果数组不写下标默认为var数组的首地址可以不用取地址符;

函数指针

int add(int a,int b){
  return a+b;
}

int main(){
  int (*q)(int a,int b) = &add;
  printf("%d",q(1,2));
}

这里的函数指针q就是等价了add函数,可以用指针指向函数地址;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值