初入c语言指针

初入c语言指针

初入指针

获取地址(查找地址&运算符)

如果a是一个变量名,&a就是a这个变量的地址。

int a = 5printf("%d,%p",a,&a);

%p用于输出变量的地址

取地址值(索引值,间接运算符*)

又称解引用运算符
ps,星号后跟一个地址或指针名,取出存储在指针指向地址的值

int a = 5;
int *p = &a;

输出 *p=5读取了指针p指向地址的值

指针变量

指针一个值为内存地址的变量,用于储存变量地址,当主调函数不使用return返回值时必须通过地址修改主调函数的值。
ps.主调函数直接通过地址索引修改主函数中变量的值。

int a = 5;
int *p = &a;
指针的声明

指向内存地址存储值的类型 指针变量名

int *p  //指向变量类型为int类型的整型
int* *p1  //指向指针变量
int** *p2  //指向指针变量的指针变量

int*为指针变量的储存类型
int** 为指向指针变量的指针变量的储存类型

指针在函数中通信
#include <stdio.h>
int swap(int x, int y)
{
    int temp;
    temp = x;
    x = y;
    y = temp;
    printf("交换后的数值%d,%d", x, y);
    return 0;
}
int main()
{
    int x = 1;
    int y = 2;
    swap(x, y);
    printf("交换后的数值%d,%d", x, y);
}

输出结果
在这里插入图片描述
很显然swap函数将数字调换但是主函数中x,y并未改变,当函数调用之后函数中声明变量会消失。
如果用指针作为形参传入函数就不一样了

#include <stdio.h>
int swap(int *x, int *y)
{
    int temp;
    temp = *x;
    *x = *y;
    *y = temp;
    return 0;
}
int main()
{
    int x = 1;
    int y = 2;
    swap(&x, &y);
    printf("交换后的数值%d,%d\n", x, y);
}

输出结果
在这里插入图片描述
原因是因为在函数中并没有生成两个新的整型变量而是指针变量,指针通过索引地址直接修改了主函数中变量所在地址的值。
ps.指针让函数通过自己的局部变量改变整个main函数中的值

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值