首页 > 其他分享 >大话C语言:第29篇 指针

大话C语言:第29篇 指针

时间:2024-07-08 17:29:36浏览次数:16  
标签:变量 int 大话 29 C语言 地址 num 整型 指针

1 指针概念

  • 指针:地址的变量化形式,其存储的是内存中某个存储单元的地址。它是地址的数值表示。

  • 指针变量:一种特殊的变量,它专门用于存放变量的地址(即指针)。

注意,指针和指针变量的区别:

  • 指针本身是一个地址,这个地址指向内存中的一个存储单元。它只是一个内存地址的抽象表示,没有存储空间来存储值,只是指向一个存储位置。

  • 指针变量则是一个变量,用于存储指针的值,即内存地址。指针变量有具体的存储空间,可以存储一个地址值。在程序中,可以通过操作指针变量来间接地访问和操作它所指向的内存地址中的数据。

2 指针变量的定义

语法格式:

类型 变量;
类型 * 指针变量 = &变量;

其中,

  • & 叫取地址,返回操作数的内存地

  • *叫解引用,指操作指针所指向的变量的值

  • 在定义变量时,* 号表示所声明的变量为指针类型。指针变量要保存某个变量的地址,指针变量的类型比这个变量的类型多一个*

  • 在指针使用时,* 号表示操作指针所指向的内存空间

注意,

  • 指针也是一种数据类型,指针变量也是一种变量

  • 指针变量指向谁,就把谁的地址赋值给指针变量

代码示例:

#include <stdio.h>

int main() 
{
    // 定义一个int类型的变量,同时赋值为10
    int a = 10;
    // 打印变量的地址
    printf("&a = %p\n", &a);
    // 定义一个指针变量,int *保存int的地址
    // int *代表是一种数据类型,int *指针类型,p才是变量名
    int* p;
    // 指针指向谁,就把谁的地址赋值给这个指针变量
    p = &a;
    // 打印p, *p, p指向了a的地址,*p就是a的值
    printf("p = %p, *p = %d\n", p, *p);

    return 0;
}

关于指针大小,可以通过,sizeof运算符获取,例如,

#include <stdio.h>

int main(int argc, char *argv[])
{
    char *p1;
    short int *p2;
    int *p3;
    long int *p4;
    float *p5;
    double *p6;
    
    printf("%d\n",sizeof(p1));
    printf("%d\n",sizeof(p2));
    printf("%d\n",sizeof(p3));
    printf("%d\n",sizeof(p4));
    printf("%d\n",sizeof(p5));
    printf("%d\n",sizeof(p6));
    
    return 0;
}

注意

  • 在 32 位系统下,所有类型的指针都是 4 个字节。

  • 在 64 位系统下,所有类型的指针都是 8个字节。

3 指针分类

按照其指向的数据类型分类,指针分类包括:

  • 字符指针,例如

// 定义了一个字符指针变量,只能存放字符型数据的地址编号
char ch;
char *p = &ch;
  • 短整型指针,例如

// 定义了一个短整型指针变量,只能存放短整型数据的地址编号
short num;
short *p = &num;
  • 整型指针,例如

// 定义了一个整型指针变量,只能存放整型数据的地址编号
int num;
int *p = &num;
  • 长整型指针,例如

// 定义了一个长整型指针变量,只能存放长整型数据的地址编号
long num;
long *p = &num;
  • 单精度浮点型指针,例如

// 定义了一个单精度浮点型指针变量,只能存放单精度浮点型数据的地址编号
float num;
float *p = &num;
  • 双精度浮点型指针,例如

// 定义了一个双精度浮点型指针变量,只能存放双精度浮点型数据的地址编号
double num;
double *p = &num;
  • 函数指针,例如

int add(int a, int b) 
{  
    return a + b;  
}

int (*func_ptr)(int, int);
  • 结构体指针,例如

// 定义结构体类型  
struct Student 
{  
    char name[50];  
    int age;  
    float score;  
};  
  
// 定义结构体指针  
struct Student *ptr;
  • 指针的指针,例如

// 定义一个整型指针  
int *ptr;      
// 定义一个指向整型指针的指针(二级指针)
int **pptr;     
  • 数组指针,例如

// 指向包含5个整数的数组的指针  
int (*int_array_ptr)[5]; 

// 指向任意长度双精度浮点数组的指针  
double (*double_array_ptr)[]; 

// 指向包含10个字符的数组的指针
char (*char_array_ptr)[10]; 
  • 通用指针,是一种特殊的指针类型,用void*来修饰。它可以指向任何类型的数据,包括结构体、数组、函数等,因此也被称为无类型指针。

标签:变量,int,大话,29,C语言,地址,num,整型,指针
From: https://blog.csdn.net/whccf/article/details/140274242

相关文章

  • Acwing 5729.闯关游戏 状压DP
    Acwing5729.闯关游戏状压DP题目链接题意:现在进行一个闯关游戏,一共有\(n\)个关卡,第\(i\)个关卡的分数为\(w_i\)。另外还有\(k\)个联动彩蛋。如果玩家通过第\(x\)个关卡后,紧接着通过了第\(y\)个关卡,就可以获得额外\(c\)分。现在你需要恰好通过\(m\)个不同关卡,顺......
  • 如何使用VS Code运行C语言
    首先需要在vscode中安装好C/C++扩展插件然后是配置gcc环境(MinGW-w64文件配置)1.我用的是离线下载方式:https://sourceforge.net/projects/mingw-w64/files/下拉后按需下载正常的Win电脑下载“x86_64-posix-sjij”就可以了下载压缩包后解压,把解压的文件夹放到D盘某个位置,打开里......
  • 【0295】Posgres内核 dynahash table 之 hash_search 实现原理(2)
    相关文章:【0294】Postgres内核dynahash之hash_search实现原理(1)0.前言在【0294】Postgres内核dynahash之hash_search实现原理(1)一文中,从Postgres内核源码角度详细讲解了dynamichashtable中hashsearch的实现原理。具体内容:如何确定segment位置如何确定bu......
  • C语言 指针和数组——指针数组的应用:命令行参数
    目录命令行参数演示命令行参数与main函数形参间的关系命令行参数什么是命令行参数(CommandLineArguments)?GUI界面之前,计算机的操作界面都是字符式的命令行界面(DOS、UNIX、Linux)例如,在DOS下拷贝文件用copyfile1.cfile2.c不......
  • C语言之考勤模拟系统平台(千行代码)
    考勤模拟系统平台目录第一章软件需求分析...1第二章系统结构设计...32.1系统架构...32.2系统组件...32.3系统流程...3第三章数据结构设计...4第四章模块划分及各模块功能介绍...64.1用户模块(UserModule)...64.2组模块(GroupModule)...64.3打卡模块(Cloc......
  • C语言的数据类型和变量
    在学习C语言之前呢,想问友友们两个问题。为什么我们要学习编程?为什么要写代码?今天上课时,老师和我们说学习编程和代码是为了解决未来生活中的问题,写出的代码是为了能够描述现实世界。欧克,接下来将和友友们一起学习C语言相关知识。希望对友友们能够有所帮助!!!C语言中的数据类型和......
  • ANSYS FLUENT搅拌器仿真(#295)
    搅拌器类旋转机械必然会涉及共同问题,其它推送中也提到过。FLUENT中旋转机械仿真方法主要有:旋转坐标系模型(RotatingReferenceFrame)、多参考坐标系模型(MRF)、混和平面模型(MixingPlane)、滑移网格模型(SlidingMesh)和重叠网格模型(overset)。其中多重参考系法,与滑移网格法设置几......
  • [C语言学习]--数据类型和变量
    文章目录前言一、数据类型介绍1.内置类型1.1.整型1.2.浮点型1.3.字符型1.4.布尔类型2.自定义类型 3.数据类型的长度4.sizeof操作符 5.signed和unsigned二、变量1.变量的创建2.变量的分类3.算术操作符(运算符)3.1.+和-3.2. *3.3./ 3.4% 4.赋......
  • C语言指针
    主要内容地址和指针变量的指针和指向变量的指针变量数组的指针和指向数组的指针变量字符串的指针和指向字符串的指针变量函数的指针和指向函数的指针变量★返回指针值的函数指针数组和指向指针的指针地址和指针在计算机中所有数据都存放在存储器中。把主存储器中的一个字......
  • C语言下结构体、共用体、枚举类型的讲解
    主要内容结构体结构体数组结构体指针包含结构体的结构链表链表相关操作共用体枚举类型结构体结构体的类型的概念         结构体实现步骤结构体变量的声明structstruct 结构体名{                     ......