C++ 彻底搞懂指针(终章)

news/2024/7/8 2:31:24 标签: c++

一是指针基础、NULL指针、void指针、指针初始化

二是指针运算、指针运算表达式分析

三是数组和指针、指针数组、二维数组指针

四是结构体指针、函数指针

本文提纲如下:

    •    命令行参数

    •    指针类型转换

    •    复杂指针分析

1. 命令行参数

main函数也可以传入数据,如下:

 

int main(int argc, char *argv[])

int main(int argc, char **argv)

以上两种写法都可以,使用命令行传参时,传入的数据以字符串的形式存在,多份数据之间以空格分隔,即,用户输入的多份数据在程序中表现为多个字符串。

argc表示传递的字符串的数目,argv是一个指针数组,每个指针指向一个字符串,或者也可以将argv写成二级指针形式。

这两个参数通常取名为 argc 和 argv,也可以取其他的名字,如果你喜欢的话。

举个例子,如下:

 

#include <stdio.h>

 

int main(int argc, char **argv)

{

    printf("Receive &d parameters\n", argc);

    for(int i = 0; i < argc; i++)

    {

        printf("%d %s\n", i, argv[i]);

    }

    return 0;

}

运行结果如下:

 

PS F:\19_learning\1_C_Programming> ./argc.exe liang chen

Receive 3 parameters

0 F:\19_learning\1_C_Programming\argc.exe

1 liang

2 chen

PS F:\19_learning\1_C_Programming>

从运行结果可以看出,包括程序名以及它后面的字符串都会被程序接收,程序名就是第一个参数。

2. 指针类型转换

在之前所举的例子中,赋值号左边是一个指针变量,赋值号右边是一个指针表达式,指针变量和指针表达式的类型应当是一致的,如果不一致就要进行强制类型转换。

对于指针类型转换需要明白的是:类似于普通变量之间的强制类型转换,普通变量进行强制类型转换时,只是改变了对内存中二进制的解读方式,指针的强制类型转换改变了访问内存的方式

举几个例子:

2.1 示例 1

 

typedef 


http://www.niftyadmin.cn/n/5536287.html

相关文章

入门篇:构建第一个鸿蒙ArkTS应用(Stage模型)

为确保运行效果&#xff0c;本文以使用DevEco Studio NEXT Developer Beta1版本为例&#xff0c;点击此处获取下载链接。 创建ArkTS工程 若首次打开DevEco Studio&#xff0c;请点击Create Project创建工程。如果已经打开了一个工程&#xff0c;请在菜单栏选择File > New &…

C#的多线程UI窗体控件显示方案 - 开源研究系列文章

上次编写了《LUAgent服务器端工具》这个应用&#xff0c;然后里面需要新启动一个线程去对文件进行上传到FTP服务器&#xff0c;但是新线程里无法对应用主线程UI的内容进行更改&#xff0c;所以就需要在线程里设置主UI线程里控件信息的方法&#xff0c;于是就有了此博文。此文记…

AGI系列(7)Reflection 在 AI agent 中的应用实例

斯坦福大学教授吴恩达一直非常推崇AI Agent,之前他提出过AI Agent的四种工作模式,分别是Reflection(反思)、Tool use(工具使用)、Planning(规划)和Multi-agent collaboration(多智能体协同)。 近日,他又开源了一个翻译 AI Agent, 他认为 AI 智能体机器翻译对改进传…

【数据库】第7讲 关系数据模型(章节测验)

一. 单选题 1【单选题】下面对于关系的叙述中&#xff0c;不正确的是&#xff08;C&#xff09; A、关系中的每个属性是不可分解的B、在关系中元组的顺序是无关紧要的C、任意的一个二维表都是一个关系D、每一个关系只有一种记录类型 2【单选题】关系模型的完整性约束不包括&…

前端引用vue/element/echarts资源等引用方法Blob下载HTML

前端引用下载vue/element/echarts资源等引用方法 功能需求 需求是在HTML页面中集成Vue.js、Element Plus&#xff08;Element UI的Vue 3版本&#xff09;、ECharts等前端资源&#xff0c;使用Blob下载HTML。 解决方案概述 直接访问线上CDN地址&#xff1a;简单直接&#xff0c…

yaml格式转换成json格式

yaml格式转换成json格式 ①postman生成的结果是yaml格式 ps&#xff1a;postman输出的格式是没有自动换行的&#xff0c;需要将内容换行 ②复制到Python的脚本跑一趟&#xff1a;自动换行并去掉/n&#xff1b; str " "//(postman输出的内容&#xff09; print(st…

嵌入式系统中的SPI存储突破:STM32与W25Q64 Flash的深度集成

摘要 在嵌入式系统设计中&#xff0c;存储解决方案的选择对性能、可靠性和成本有着深远的影响。W25Q64 Flash存储器以其高容量、低功耗和高速数据传输特性&#xff0c;成为STM32微控制器项目中的优选。本文将深入探讨STM32与W25Q64 Flash的深度集成&#xff0c;包括硬件设计、…

Java类文件

Class文件是以无符号字节为基础单位的二进制流&#xff0c;每个数据项目严格按照顺序紧密地排列在文件中。 版本信息&#xff0c;常量池 常量池中主要放置字面量和符号引用 字面量&#xff1a;文本字符串&#xff0c;final常量 符号引用&#xff1a;导出的包&#xff0c;字段&a…