零基础如何快速学会C语言指针?

本文详细介绍了C语言中的指针,包括指针的概念,指针变量的声明与使用,指针类型对解引用操作的影响,以及指针在数组和内存操作中的应用。文中通过实例展示了指针的步长和加减运算,并强调了指针初始化的重要性。此外,还探讨了指针在函数调用、数组名和字符串中的角色。最后,提到了指针在程序设计中的价值和学习指针的必要性。
摘要由CSDN通过智能技术生成

一、引言

对于很多大学生,C语言指针是最让人头疼的地方,对于当初的我也不例外,通过网上的资料今天我就给大家汇总下C语言指针的概念及方法。

二、指针是什么

指针是C语言中广泛使用的一种数据类型,运用指针编程是C语言最主要的风格之一。正确而灵活地运用它,可以有效地表示复杂的数据结构;能动态分配内存;能方便地使用字符串;有效而方便地使用数组;在调用函数时能得到多于1个的值;并能像汇编语言一样处理内存地址,从而变出精练而高效的程序等,这对设计系统软件是很必要的。掌握指针的应用,可以使程序简洁、紧凑、高效。指针极大地丰富了C语言的功能。每一个学习和使用C语言的人,都应当深入地学习和掌握指针。可以说,不掌握指针就是没有掌握C语言的精华。

指针是变量,变量存放地址,指针即为地址,存放在指针中的值都被当成地址

  #include <stdio.h>
      int main(void)
      {
	    int a = 10;//内存中开辟空间
	    int* p = &a;//这里我们对变量a,取其地址,将a的地址存放在p中,p就是一个指针变量
	    return 0;
       }

二、指针和指针类型

指针类型决定了指针进行解引用操作的时候,能够访问空间的大小

    #include <stdio.h>
    int main(void)
      {
	 int a = 0x11223344;
	int* pa = &a;     //二者都可以存放地址
	*pa = 0;
 
 
	char* pc = &a;    //二者访问的字节不同
	*pc = 0;
	return 0;
      }

int*p; *p可以访问4个字节

char*p; *p可以访问1个字节

double*p; *p可以访问8个字节

指针类型决定了指针走一步走多远(指针的步长)

#include <stdio.h>
int main(void)
{
	int a = 0x1122344;
	int* pa = &a;
	char* pc = &a;
	printf("%p\n", pa);
	printf("%p\n", pa + 1);
	printf("%p\n", pc);
	printf("%p\n", pc + 1);
	return 0;
}

三、字符数组总结

指针(Pointer)就是内存的地址,C语言允许用一个变量来存放指针,这种变量称为指针变量。指针变量可以存放基本类型数据的地址,也可以存放数组、函数以及其他指针变量的地址。

程序在运行过程中需要的是数据和指令的地址,变量名、函数名、字符串名和数组名在本质上是一样的,它们都是地址的助记符:在编写代码的过程中,我们认为变量名表示的是数据本身,而函数名、字符串名和数组名表示的是代码块或数据块的首地址;程序被编译和链接后,这些名字都会消失,取而代之的是它们对应的地址。

  1. 指针变量可以进行加减运算,例如p++、p+i、p-=i

。指针变量的加减运算并不是简单的加上或减去一个整数,而是跟指针指向的数据类型有关。

  1. 给指针变量赋值时,要将一份数据的地址赋给它,不能直接赋给一个整数,例如int *p = 1000;

是没有意义的,使用过程中一般会导致程序崩溃。

  1. 使用指针变量之前一定要初始化,否则就不能确定指针指向哪里,如果它指向的内存没有使用权限,程序就崩溃了。对于暂时没有指向的指针,建议赋值NULL

  2. 两个指针变量可以相减。如果两个指针变量指向同一个数组中的某个元素,那么相减的结果就是两个指针之间相差的元素个数。

  3. 数组也是有类型的,数组名的本意是表示一组类型相同的数据。在定义数组时,或者和 sizeof、& 运算符一起使用时数组名才表示整个数组,表达式中的数组名会被转换为一个指向数组的指针。

四、视频教学

如何更多小伙伴想更快速的了解C语言指针相关的视频,博主推荐可以看下此免费视频教学

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值