首页 > 系统相关 >指针:存放内存地址的变量

指针:存放内存地址的变量

时间:2024-08-16 09:17:40浏览次数:8  
标签:num1 num2 int void 存放 数组 内存地址 指针

//指针:类型跟存放变量的类型一致

定义格式:数据类型 * 变量名;

static关键字可以防止内存被释放

禁止使用野指针和悬空指针

特殊指针:void* p;空类型指针,可以存放任何类型指针,但是不能进行操作

//指针高级应用:以字节为单位,交换两个变量的值

#include <stdio.h>

void Swap(void* p1,void* p2,int len);

int main(){

//指针高级应用,交换两个数值:按字节交换两个变量值,可适用各种数据类型数据交换,使函数具有通用性

long long a = 2147483647;

long long b = 21474836;

void* p1 = &a;

void* p2 = &b;

printf("交换前:a = %d,b = %d\n",a,b);

Swap(p1,p2,sizeof(a));

printf("交换后:a = %d,b = %d",a,b);

}

void Swap(void* p1,void* p2,int len){

char* pc1 = p1;//用char指针按字节交换两个变量数值

char* pc2 = p2;//char指针是1个字节

int i;

for(i = 0;i < len;i++){

char temp = *pc1;

*pc1 = *pc2;

*pc2 = temp;

pc1++;

pc2++;

}

}

二级指针,多级指针:

二级指针:指向指针的指针,多级指针同理,类型跟指向空间中存放数据类型相同

//数组和指针:

数组指针:指向数组的指针,使用数组名和数组首地址的步长不同,前者是数据类型字节数,后者是数据类型 * len

//二维数组:数据类型 数组名[行数][列数];矩阵

数组指针,指针数组

数组指针:指向数组的指针

指针数组:存放指针的数组

两者步长不同

//函数指针:指向函数的指针,嵌入式接口用函数指针调用

//定义格式:数据类型 (*指针变量名)(形参1数据类型,形参2数据类型) = 函数名;

//函数指针,函数指针数组练习:通过函数指针数组调用函数

#include <stdio.h>

int Sum(int num1,int num2);

int Abstruct(int num1,int num2);

int Multiply(int num1,int num2);

int Divide(int num1,int num2);

int main(){

int num1,num2;

printf("请输入两个要运算的数值:");

scanf("%d%d",&num1,&num2);

int (*arr[4])(int,int) = {Sum,Abstruct,Multiply,Divide};

int choose;

printf("请输入运算编号(1~4):");

scanf("%d",&choose);

int res = (arr[choose-1])(num1,num2);

printf("%d",res);

}

int Sum(int num1,int num2){

return num1 + num2;

}

int Abstruct(int num1,int num2){

return num1 - num2;

}

int Multiply(int num1,int num2){

return num1 * num2;

}

int Divide(int num1,int num2){

return num1 / num2;

}

标签:num1,num2,int,void,存放,数组,内存地址,指针
From: https://www.cnblogs.com/izxw/p/18362261

相关文章

  • C:指针学习-指针变量—学习笔记
    今日伊雷娜:目录前言:1、字符指针变量1.1使用字符指针存放字符1.2使用字符指针变量存放字符串 2、数组指针变量2.1什么是数组指针变量?2.2数组指针变量初始化2.3关于数组指针类型的解析3、函数指针变量3.1函数地址3.2 函数指针变量的创建3.3关于指针的连续......
  • C语言-使用数组法,指针法实现将一个5X5的矩阵中最大的元素放在中心,四个角分别放四个最
    1.题目要求:将一个5X5的矩阵中最大的元素放在中心·,四个角分别放四个最小的元素(顺序为从左到右,从上到下,从小到大存放),写一函数实现之。2.数组法实现#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>//一、数组法实现intmain(){ intarr[5][5]={ {1,2,3,4,5},......
  • 【C++】动态内存(二)智能指针
    由于new和delete会造成一定程度的内存泄漏问题,以及内存所有权不清晰,因此引入自动销毁相应内存空间的智能指针。智能指针是抽象数据类型,本身具有析构函数,因此调用之后会自动调用析构函数,在析构函数中会自动调用delete来释放相应内存空间,因此不用手动显式的调用delete。【......
  • C/C++ 动态分配:malloc()和free()所涉及的空指针和强制类型转换、与new和delete的对比
    1、动态分配的内涵所谓动态内存分配,是指在程序运行时根据需要分配和释放内存,而不是在编译时确定内存需求。动态分配包括两方面的内涵:在堆上分配内存。对于linux的虚拟内存,可以分成以下5段:文本段、数据段(分初始化和未初始化数据段)、堆和栈。不使用动态分配定义一个变量,这个变......
  • C语言指针详解-上
    C语言指针详解-上前言1.指针的基本概念1.1指针是什么1.2指针的声明与初始化1.3取地址符`&`和解引用符`*``&`运算符用于**获取变量的地址**`*`运算符用于访问指针指向的值2.指针的类型常见数据类型的指针指针与数组、字符串数组指针结构体指针函数指针二级指针void指......
  • 深入了解指针(8)
    文章目录1.sizeof和strlen的对⽐1.1sizeof1.2strlen1.3sizeof和strlen的对⽐2.数组和指针笔试题分析2.1一维数组2.2字符数组2.3⼆维数组3.指针运算笔试题分析1.sizeof和strlen的对⽐1.1sizeof在学习操作符的时候,我们学习了sizeof,sizeof计算变量所占......
  • C语言基础11指针
    指针的引入为函数修改实参提供支持。为动态内存管理提供支持。为动态数据结构提供支持。为内存访问提供另一种途径。指针概述内存地址:系统为了内存管理的方便,将内存划分为一个个的内存单元(1个内存单元占1个字节),并为每一个内存单元进行了编号,内存单元的编号称为该......
  • 三:指针在数组中的应用
    1.使用指针访问数组指针的加减运算可以用来在内存中移动指针的地址。加上一个整数`n`,实际上就是移动了`n`个步长字节。步长是由指针指向的数据类型决定的。例如,假设有一个`int`类型的指针`p`:int*p=(int*)100;那么,执行`p+1`后,指针地址会向后移动`sizeof(in......
  • 【代码随想录】一、数组:3.双指针 - 977.有序数组的平方
    本文为977.有序数组的平方的解法,部分图文参考自代码随想录977.有序数组的平方。1.题目1:977.有序数组的平方1.1.解法1:直接排序classSolution{public:vector<int>sortedSquares(vector<int>&nums){for(inti=0;i<nums.size();i++){n......
  • vue 图片资源应该如何存放并引入(public、assets)?
    public放不会变动的文件(相当于vue-cli2.x中的static)public/目录下的文件并不会被Webpack处理:它们会直接被复制到最终的打包目录(默认是dist/static)下。必须使用绝对路径引用这些文件,这个取决于你vue.config.js中publicPath的配置,默认的是/。assets放可能会变动的文件assets目录......