C语言---初识指针(1)

        作为当代大学生,选择计算机这条道路,对我而言是一次非常重要的抉择。

        我也是刚接触到指针,今天在这里分享一下我初学指针的经验,同时也希望大家指出我的问题,求得共同进步。

        c语言中,学习指针是必不可少的一部分,也是我们成为真正程序员的基础,学好指针对于我们以后学习以及工作都会有非常重要的帮助。在这里有的同学可能就要说,指针不太难懂,有的地方很难理解,在这里,我站在初学者的角度上,给大家说一下我的理解。有错误请指出!

       指针是什么??

那到底什么是指针呢,其实指针和之前学习的变量基本相似,不过变量里面放的是一些值,而指针里面放的是它所指的地方的地址。在声明一个变量是,计算机就会为该变量预留一个位置,而指针所指☞的就是那个位置。

举个例子:

int a = 10;//设置一个变量a的值为10

int *p = &a;//p这个指针里面就放的是a的地址

&这个符号,就是取地址符,就像我们在使用scanf函数时  scanf("%d",&a); 这个a前面的&是一个意思,就是获取到某个变量的地址。

而当你创建了一个指针是,你就要给他赋地址,否则的话它就会像那种鼠标一样在硬盘上乱找,就会随机找个地址,所以我们在创建了指针时,就一定要给他去给他赋一个位置。

 指针的基础:

如何创建一个指针函数呢?

int p; 这是我们之前就知道的,创建一个整形变量p,而int *p; 就是设置一个指针p;关键就是在于中间的 *。所以我们在创建指针变量时,一定不要忘记 *;

指针的赋值:可以在创建指针的时候就赋值像这样:int *p = &a;  也可以在创建了之后单独赋值像这样: int *p;   p = &a;   两种方法都一样,没有太大的区别,只不过一个一行代码,一个两行代码,如果我们之前已经创建了变量,那我们还是在创建指针的时候就直接给他赋值,以免后面忘了,对自己后续的程序发生影响。

那指针到底能干什么呢?

#include <stdio.h>

int main()
{
    int a = 10;
    int *p = &a;
    printf("a的地址为%p",&a);//这是直接输出a的地址
    printf("a的地址为%p",p);//只是输出p的指针所指的地址
    printf("a的值为%d",*p);//输出p的指针所指的地址中变量的值

    return 0;
}

通过这3个输出函数我们可以知道,前两个输出的都是a的地址,而第三个输出的则是a变量里的值。

所以我们可以理解为 *p 就是 a 这个变量的值,这就是最通俗易懂的理解了。

并且在输出 p 时也就是输出 的地址时,也是有不同的输出方式的,最基础的就是

%lu 是十进制的方式输出;

%p是以十六进制的方式输出;

之前说到 *p 可以看作是它所指的 a 变量的值,所以它也是可以再重新被赋值的,当然它的赋值不是给指针函数赋值,看似是在给指针赋值,其实改变的还是它所指的函数的值;

像这样

int a,*p;
a = 10;
p = &a;
*p = 20;
printf("a = %d",*p);

这个函数所输出的值就会为 20 ;因为指针是之间在你的地址上给你改变,所以说指针的改变相比较之前的函数就会方便很多,比如我们在学习函数的时候,会将值从主函数传到其他的函数中去做计算,但是传回来时就很麻烦,因为它一次只能传回来一个值,但是指针就不一样了,它不需要将值传回来,直接时实时将它所指的值进行改变;

像接下来这个例子,我们之前也都用函数的方式写过;

#include <stdio.h>

void swap(int* p, int* q)
{
	int temp;
	temp = *p;
	*p = *q;
	*q = temp;

}
int main()
{
	int a = 10, b = 20;
	swap(&a, &b);
	printf("a=%d  b=%d",a,b);

	return 0;
}

这个函数最后输出的值为

 可以看到,输出的值已经发生了交换,这就是指针的强大之处吧;

可以更简单的来解决我们之前遇到的问题,所以说,学好指针是学好c语言的基础!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小卓要努力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值