服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - 深入了解C语言指针

深入了解C语言指针

2021-12-08 13:26小尹同学 C/C++

这篇文章主要介绍了C语言指针详解及用法示例,介绍了其相关概念,然后分享了几种用法,具有一定参考价值。需要的朋友可以了解下

指针是什么?

总结:指针就是个变量,变量里面是地址,指针就是地址。(存放在指针的值都被当成地址处理)。

:指针的大小在32位平台是4个字节,在64位平台是8个字节。

指针和指针类型

通过前面的知识我们知道,变量有不同的类型,如:整形,浮点型等。

同理:指针也有不同的类型。

**指针的定义方式:

变量类型 + *

比如:

int * pi=NULL char * pc=NULL short * ps=NULL long *pl=NULL float *pf=NULL double *pd=NULL …

指针类型的意义?

指针±整数

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
    int n = 10;
    char *pc = (char*)&n;
    int *pi = &n;
    printf("n=%p\n", &n);
    printf("pc=%p\n", pc);
    printf("pi=%p\n", pi);
    printf("pc+1=%p\n", pc + 1);
    printf("pi+1=%p\n", pi + 1);
    return 0;
}

总结:指针的类型决定了指针向前或者向后走一步有多大(距离)。

指针的解引用

指针运算

  • 指针±整数
  • 指针-指针
  • 指针的关系运算

:指针相减前提,指向的地址相等

指针±整数

?
1
2
3
4
5
6
7
8
#define MAX 5
int arr[5];
int *p;
//指针+-整数
for(p=&arr[0] ;p<&a[MAX]; )
{
     *p++ =0;
}

指针-指针

?
1
2
3
4
5
6
7
int my_strlen(char *s)//没有指针减指针
{
    char *p = s;
    while (*p != '\0')
        p++;
    return p - s;
}

指针的关系运算

?
1
2
3
4
for (p = &arr[MAX]; p > &arr[0])
{
    *--p;
}

标准规定:允许指向数组元素的指针与指向数组最后一个元素后面的那个内存位置的指针比较,但是不允许与指向第一个元素之前的那个内存位置的指针进行比较。

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注服务器之家的更多内容!

原文链接:https://blog.csdn.net/qq_52988578/article/details/117202716

延伸 · 阅读

精彩推荐