指针

作者: SimpleSJ | 来源:发表于2018-10-30 11:13 被阅读0次

1.指针是什么

通俗一点来说,指针就是用来保存内存地址的

2.格式

  • 指针类型说明 *指针变量名
🌰:
char *p; // 一个用于指向字符形变量的指针
int *q; // 一个用于指向整形变量的指针
long *t; // 一个用于指向长整形变量的指针
float *r; // 一个用于指向单精度浮点形变量的指针
double *s; // 一个用于指向双精度浮点形变量的指针

3.初始化

  • 1.定义的同时初始化
int a = 5;
int *p = &a;
  • 2.先定义后初始化
int a = 5;
int *p;
p=&a;

4.指针注意点

  • 在定义指针时,“*”号表示定义的变量是指针变量,变量的值只能存放地址。
  • 一个类型的指针只能指向同类型的变量,不能指向其他类型的变量。
//这里指针的类型与指向地址内容的数据类型要一致,都为int
int a = 50;
int *p = &a;
  • 多个指针变量可以指向同一个地址
int a =50;
int *p1 = &a;
int *p2 = &a;
  • 指针的指向是可以改变的
int a =50;
int b = 10;
int *p = &a;
*p = 88;
p = &b;
*p = 50;
printf("a:%i--b:%i\n",a,b);
//输出:
a:88--b:50
  • 在定义变量的时候 * 是一个类型说明符,说明定义的这个变量是一个指针变量
int *p=NULL; // 定义指针变量
  • 在不是定义变量的时候 *是一个操作符,访问指针所指向存储空间
int a = 5;
int *p = &a;
printf("a = %d", *p); // 访问指针变量

5.指针为什么要分类型

  • 虽然所有的指针都只占8个字节,但不同类型的变量却占不同的字节数。
    • 一个int占用4个字节,一个char占用1个字节,而一个double占用8字节;
    • 现在只有一个地址,我怎么才能知道要从这个地址开始向后访问多少个字节的存储空间呢,是4个,是1个,还是8个。
    • 所以指针变量需要它所指向的数据类型告诉它要访问多少个字节存储空间,也就是说指针根据指针类型取对应的字节数的内存空间,这里可以结合前面(https://www.jianshu.com/p/7dbf84fbd16d)用char类型的指针取int变量中每个字节存储的数值来看

6.指针与数组

int nums[] = {1,3,5,7,9};
// nums = &nums = &nums[0] 都是数组的内存地址
int *p = nums;
  • 利用指向数组的指针操作数组
int nums[] = {1,3,5,7,9};
// nums = &nums = &nums[0] 都是数组的内存地址
int *p = nums;

printf("----%i\n--------%i\n------%i\n",*p,*(p+1),p[2]);
//输出:
----1
--------3
------5

如果指针变量p已指向数组中的一个元素,则p+1指向同一数组中的下一个元素,p-1指向同 一数组中的上一个元素。


  • 引用一个数组元素,可用下面两种方法:
    • 下标法:如nums[i]形式,因为 p = nums,所以也可以用p[i]的形式
    • 指针法: *(p+i)形式

相关文章

  • 混淆知识点

    1、指针数组&数组指针、常量指针&指针常量、函数指针&指针函数 数组指针&指针数组 数组指针的定义 int (*p...

  • C语言

    C 指针、指针变量、函数指针、指针函数、指针数组、数组指针、C 数组

  • 指针

    普通指针指针的指针 数组指针 函数指针

  • 函数指针

    概念: 指针函数, 函数指针, 指针数组, 数组指针, 指向数组的指针, 指向函数指针数组的指针。

  • C:函数指针的坑

    关于该死的函数指针和指针函数 先来个目录 常量指针、指针常量 数组指针、指针数组 函数指针、指针函数 1、先看第一...

  • C 语言指针

    指针类型:指针的读取长度,指针的读取方向(大小端) 空指针,无类型指针,野指针 常量指针,指向常量的指针 http...

  • 二、C语言基础

    A、指针 指针的概念:指针变量 和 指针 的区别 ?答:指针变量是指针的标记,也可以通过指针变量的标记操作指针内存...

  • 王道程序员求职宝典(十一)指针与引用,树

    指针与引用 指针声明typedef别名类型检查void*指针指向指针的指针函数指针typedef简化函数指针定义初...

  • NDK02

    指针 指针概念 1 .指针变量和指针的区别?答: 指针变量是定义指针的标记,指针就是指向的内存地址。2 .函数指针...

  • 12 C指针

    1、指针定义 2、指针进阶 3、指针使用 4、多级指针 4、指针和数组 5、指针和字符串 6、高级指针之和指向函数的指针

网友评论

      本文标题:指针

      本文链接:https://www.haomeiwen.com/subject/funbtqtx.html