C语言之初识指针

 更新时间:2021年12月15日 08:52:58   作者:静有引力  
在C语言中,指针是一种保存变量地址的变量。这篇文章介绍了初识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 时也就是输出 a 的地址时,也是有不同的输出方式的,最基础的就是

  • %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语言的基础!

到此这篇关于C语言之初识指针的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • C语言中结构体struct编写的一些要点解析

    C语言中结构体struct编写的一些要点解析

    这篇文章主要介绍了C语言中结构体struct编写的一些要点解析,谈到了结构体的声明和指针指向等重要知识点,需要的朋友可以参考下
    2016-04-04
  • 自己实现strcpy函数的实现方法

    自己实现strcpy函数的实现方法

    本篇文章介绍了,自己实现strcpy函数的实现方法。需要的朋友参考下
    2013-05-05
  • C++中什么是虚函数

    C++中什么是虚函数

    虚函数是C++中的一种机制,允许在基类中声明一个函数,并在派生类中对其进行重新定义,从而实现多态性,虚函数通过基类指针或引用调用派生类的函数,实现运行时绑定,虚函数的关键是使用`virtual`关键字修饰函数声明,并且虚函数可以有默认实现,也可以是纯虚函数
    2025-01-01
  • OpenCV Matlab生成视频倒放功能

    OpenCV Matlab生成视频倒放功能

    这篇文章主要介绍了OpenCV Matlab生成视频倒放功能,大家都知道不少带声音视频的后缀名往往都是.mp4,那么如何获取里面的音频呢?本文通过实例代码给大家介绍的非常详细,需要的朋友参考下吧
    2022-01-01
  • C++ LeetCode1945题解字符串转化后的各位数字之和

    C++ LeetCode1945题解字符串转化后的各位数字之和

    这篇文章主要为大家介绍了C++ LeetCode1945题解字符串转化后的各位数字之和示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • C语言实现按行读写文件

    C语言实现按行读写文件

    这篇文章主要为大家详细介绍了C语言实现按行读写文件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11
  • C++ std::function的用法详解

    C++ std::function的用法详解

    这篇文章主要介绍了C++ std::function使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-10-10
  • C++ cin输入的多种方法详解

    C++ cin输入的多种方法详解

    cin是C++编程语言中的标准输入流对象,即stream类的对象。cin主要用于从标准输入读取数据,这里的标准输入,指的是终端的键盘。接下来通过本文给大家分享C++ cin输入的几种方式,一起看看吧
    2021-09-09
  • opencv实现图像倾斜校正

    opencv实现图像倾斜校正

    这篇文章主要为大家详细介绍了opencv实现图像倾斜校正,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • C语言实现括号配对的方法示例

    C语言实现括号配对的方法示例

    本文主要介绍了C语言实现括号配对的方法示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09

最新评论