C语言_(8)_指针

news/2025/2/27 23:05:34/

目录

1       指针的概念

2        指针的定义

3        指针操作运算符 

4        指针变量的初始化

5         指针的算数运算

6        指针和数组的关系 


 

        指针这个东西算是c语言最好用的工具了,它可以直接操作底层内存,达到其他编程语言不能干的操作,指针也可以使我们的代码变得简单高效。

1       指针的概念

                地址:内存中用来区分不同字节空间的编号
                指针:指针就是地址,地址就是指针
                指针变量:用来存放指针的变量称为指针变量

2        指针的定义

                数据类型 *变量名;
        
                        int *p;
                        double *p;
                        char *p;
                        short *p;
                        long *p;
                        float *p;
        
                        指针占8个字节(所有指针均为8个字节

3        指针操作运算符 

        &:获得变量在内存空间中的首地址
        *:获得指针指向空间的值
            
        *p = 100;
        将右边的值赋值给p指向的空间
        
        num = *p;
        取p指针指向空间中的值赋值给num
        
        
        *和&连用,可以将两个运算符省去
        
        直接访问:通过变量名访问内存空间
        间接访问:通过变量在内存空间中存放的地址访问空间 

4        指针变量的初始化

                int *p = NULL;
        
        空指针:指向内存地址为0x0的指针
        野指针:未经初始化的指针,或指向一片已经被释放过空间的指针
        注意:
            1.避免出现野指针
            2.定义指针时必须初始化为NULL,防止出现野指针 

5         指针的算数运算

        指针+1:向内存高地址偏移指向数据类型大小个字节空间
        指针-1:向内存低地址偏移指向数据类型大小个字节空间 

6        指针和数组的关系 

            数组存储数据
            指针操作数据 

    1.数组的数组名是指向数组第一个元素的指针
        a == &a[0]
        一般情况下a可以理解为int*型:
            以下2中情况不能将a理解为int*型:
                1.sizeof运算时
                2.&运算时
    2.访问一维数组下标为n元素的方式:
        int a[5];
        int *p; 
        p = a;
        a[n] == *(a + n) == *(p + n) == p[n] 

     3.如何使用指针操作遍历字符串

        char *p = NULL;
        p = str;
        while (*p != '\0')
        {
            p++;
        }

eg:利用指针间隔打印字符串"hao hao xue xi"

#include <stdio.h>int main(int argc, const char *argv[])
{char str[32] = {"hao hao xue xi"};char *p = NULL;p = str;while(*p != '\0'){putchar(*p);p++;}return 0;
}

 


http://www.ppmy.cn/news/404720.html

相关文章

C语言基于FOC控制算法和STM32主控芯片的双路直流无刷电机控制器源码

【FOCSTM32】双路直流无刷电机矢量控制器-使用文档 &#x1f4d5; 介绍 控制器主控芯片采用STM32F405RGT6&#xff0c;控制器底层基于HAL库和FreeRTOS实时操作系统&#xff0c;预留CAN、USART、SWD、USB接口各一&#xff0c;便于通信和控制的工程应用。该控制器提供双路无刷电…

C(8)

C语言位运算与文件 本章引言: 在不知不觉中我们的C高速入门系列已经慢慢地接近尾声了,而在这一节中,我们会对 C语言中的位运算和文件进行解析,相信这两章对于一些人来说是陌生的,由于非常多 老师都会跳过这两个大知识点,事实上这两个也是灰常重要的!比方一个问题,叫你算 变量a乘…

android解决文件缓存太多导致lowmemorykiller问题

一、背景 经常出现这样的现象&#xff0c;Android设备在开机后&#xff0c;就发生了lowmemorykiller,特别是在刷机后首次开机。 使用命令dumpsys meminfo 查看&#xff0c;发现PSS通常比较低&#xff0c;而大量的内存被cached kernel占用。 Total RAM: 6,120,920K (status mod…

ikbc键盘win键失效的解决方法

一、引子 今天敲代码时发现键盘win键失灵了&#xff0c;因为最近刚从windows系统切换到mac系统编程&#xff0c;所以一直以为是mac系统下键盘配置问题或者兼容性问题&#xff0c;反复尝试了很久没有解决。 后来问了购买店铺的客服&#xff0c;原来是win键被锁住了。 二、原因…

C18

计算1!2!3!…n!的值&#xff0c;n的值由键盘输入 #include<stdio.h> int main() {int i 1, n, sum0, temp1;printf("输入一个数\n");scanf("%d", &n);while (i < n){temp temp*i;sum sum temp;i;}printf("%d\n", sum);return …

C08指针

前言&#xff1a;更多内容请看总纲《嵌入式C/C学习路》 1. 相关概念 操作系统给每个存储单元分配了一个编号&#xff0c;从ox00 00 00 00~0xff ff ff ff&#xff0c;这个编号称为地址&#xff0c;指针就是地址指针变量&#xff1a;即这个变量用来存放一个地址编号无论什么类型…

c<8>指针

目录 2&#xff0c;指针的赋值 2.1C语言允许指针赋值为0&#xff08;初始化&#xff09; 2.2指针赋值例 2.3输出指针的值 3&#xff0c;用指针引用数组 3.1优先级问题 3.2用数组名作为函数形参 3.4.多维数组 4.字符串 4.1通过指针引用字符串 4.2字符串的复制 5.函数中…

第二章_基于redis实现分布式锁

基本实现 借助于redis中的命令setnx(key, value)&#xff0c;key不存在就新增&#xff0c;存在就什么都不做。同时有多个客户端发送setnx命令&#xff0c;只有一个客户端可以成功&#xff0c;返回1&#xff08;true&#xff09;&#xff1b;其他的客户端返回0&#xff08;false…