C语言—指针和数组

写在前

一个指针变量指向某个普通变量,则指针变量就等于普通变量。
指针变量存放的是地址,普通变量存放的是数据。

int * p;
int i=5,j;
p = &i;

此程序,*p=i=5,在所有出现 *p 或 i 的位置,两者都可以互相替换。

通过

j = *p;

可以将i的值5赋给j。

通过指针p间接访问变量a,改变a的值


{int a;int *p=&a;printf("请输入整数:");scanf("%d",&a);printf("a=%d\n",a);printf("请输入整数:");scanf("%d",p);printf("a=%d\n",a);return 0;} 

在这里插入图片描述

一维数组名a存放的是数组第一个元素的地址a[0]

数组名就是个地址信息,数组名就是数组第一个元素的地址。
在这里插入图片描述

#include <stdio.h>
int main ()
{int a[5];printf ("%d\n",&a[0]);//此处输出为a[0]的地址 6487552printf ("%d\n",a);//此处输出为数组名a的含义 6487552return 0;
}

在这里插入图片描述

如果p是一个指针变量,那么p[i]永远等价于*(p+i)

#include <stdio.h>
int main()
{int a[5] = { 1,2,3,4,5};int i;for( i = 0 ; i < 5 ; i++ ){printf("%d " , a[i]);}printf ("\n");for(i = 0 ; i < 5 ; i++ ){printf("%d " , *(a+i));}return 0 ;
}

在这里插入图片描述

注意:

int (*p[5])

定义了一个数组,数组名为p,其中包含5个指针,指针指向整型类型数据;

int (*p)[5]

定义了一个指针,指针指向一个数组,数组中有5个元素,元素类型为整型。
#include <stdio.h>
int main()
{char a[] ="iwatch";int b[5]={1,2,3,4,5};float c[5]={1.1,2.2,3.3,4.4,5.5};double d[5]={1.1,2.2,3.3,4.4,5.5};printf("a[0] -> %p, a[1] -> %p, a[2] -> %p \n",&a[0],&a[1],&a[2]);printf("b[0] -> %p, b[1] -> %p, b[2] -> %p \n",&b[0],&b[1],&b[2]);printf("c[0] -> %p, c[1] -> %p, c[2] -> %p \n",&c[0],&c[1],&c[2]);printf("d[0] -> %p, d[1] -> %p, d[2] -> %p \n",&d[0],&d[1],&d[2]);return 0;
}

在这里插入图片描述

#include <stdio.h>
int main()
{char a[] ="iwatch";int b[5]={1,2,3,4,5};float c[5]={1.1,2.2,3.3,4.4,5.5};double d[5]={1.1,2.2,3.3,4.4,5.5};char *p=a;printf("*a = %c, *(a+1) = %c, *(a+2) = %c\n",*a,*(a+1),*(a+2));printf("*p = %c, *(p+1) = %c, *(p+2) = %c\n",*p,*(p+1),*(p+2));int *q=b;printf("*b = %d, *(b+1) = %d, *(b+2) = %d\n",*b,*(b+1),*(b+2));printf("*q = %d, *(q+1) = %d, *(q+2) = %d\n",*q,*(q+1),*(q+2));printf("a[0] -> %p, a[1] -> %p, a[2] -> %p \n",&a[0],&a[1],&a[2]);printf("b[0] -> %p, b[1] -> %p, b[2] -> %p \n",&b[0],&b[1],&b[2]);printf("c[0] -> %p, c[1] -> %p, c[2] -> %p \n",&c[0],&c[1],&c[2]);printf("d[0] -> %p, d[1] -> %p, d[2] -> %p \n",&d[0],&d[1],&d[2]);return 0;
}

在这里插入图片描述

#include <stdio.h>
#include <cstring>
int main()
{char *str="I love iwatch!";int i,length;length=strlen(str);for(i=0;i<length;i++){printf("%c",str[i]);}return 0;
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/216927.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单文件组件MVVM

单文件组件&MVVM 所谓组件化开发&#xff0c;就是创建一个个组件。 Vue是一个大类&#xff0c;渲染一切从new Vue开始。 指定视图&#xff1a;el template render:jsx语法 $mount[数学公式] 编译App.vue&#xff0c;作为视图入口 单个组件&#xff1a;结构 样式 data compu…

十大排序之堆排序(详解)

文章目录 &#x1f412;个人主页&#x1f3c5;算法思维框架&#x1f4d6;前言&#xff1a; &#x1f380;堆排序 时间复杂度O(n*logn)&#x1f387;1. 算法步骤思想&#x1f387;2、动画演示&#x1f387;3.代码实现 &#x1f412;个人主页 &#x1f3c5;算法思维框架 &#x1…

vivado产生报告阅读分析22

“ Advanced ”选项卡 “ Advanced ” &#xff08; 高级 &#xff09; 选项卡如下图所示。 在“ Advanced ”选项卡中提供了以下字段 &#xff1a; • “ Report ” &#xff08; 报告 &#xff09;&#xff1a; 选中“ Advanced ”选项卡中的“ Cells to Analyze ” &…

GEE:通过将 Landsat 5、7、8、9 的 C02 数据集合并起来,构建 NDVI 长时间序列

作者:CSDN @ _养乐多_ 本文记录了在 Google Earth Engine(GEE)平台上,将 Landsat-5、Landsat-7、Landsat-8 和 Landsat-9 的数据合成为一个影像集合,并生成 NDVI(归一化植被指数)的时间序列的代码。 代码封装成了函数,方便调用,结果如下图所示, 在实际应用中,可能…

【迅搜03】全文检索、文档、倒排索引与分词

全文检索、文档、倒排索引与分词 今天还是概念性的内容&#xff0c;但是这些概念却是整个搜索引擎中最重要的概念。可以说&#xff0c;所有的搜索引擎就是实现了类似的概念才能称之为搜索引擎。而且今天的内容其实都是相关联的&#xff0c;所以不要以为标题上有四个名词就感觉好…

windows运行Pangolin应用填坑心得——如何在window应用轻量级opengl软件Pangolin库显示3D界面及窗口

目录 0、前言1、最有效的安装打开方式准备工作安装git安装vcpkg&#xff08;1&#xff09;下载&#xff08;2&#xff09;安装&#xff08;3&#xff09;集成至vs 安装cmake 安装pangolin 2、应用实例c工程&#xff08;1&#xff09;vs创建新工程&#xff08;2&#xff09;新工…

电子学会C/C++编程等级考试2021年06月(二级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:数字放大 给定一个整数序列以及放大倍数x,将序列中每个整数放大x倍后输出。 时间限制:1000 内存限制:65536输入 包含三行: 第一行为N,表示整数序列的长度(N ≤ 100); 第二行为N个整数(不超过整型范围),整数之间以一个空格…

linux开启apache服务

vim /etc/apache2/ports.conf 键盘输入i 进入插入编辑模式&#xff0c;修改apache2默认监听端口号为8080 &#xff0c;编辑好后&#xff0c;按Esc键“&#xff1a;wq!” 保存退出。&#xff08;注&#xff1a;端口也可以不修改&#xff09; 在终端输入“/etc/init.d/apache2 …

vivado产生报告阅读分析21

其他命令选项 • -of_objects <suggestion objects> &#xff1a; 启用特定建议的报告。在此模式下运行时 &#xff0c; report_qor_suggestions 不会生成新建议。此命令可快速执行 &#xff0c; 读取 RQS 文件后 &#xff0c; 此命令可用于查看其中包 含的建议。其…

人工智能Keras图像分类器(CNN卷积神经网络的图片识别篇)

上期文章我们分享了人工智能Keras图像分类器(CNN卷积神经网络的图片识别的训练模型),本期我们使用预训练模型对图片进行识别:Keras CNN卷积神经网络模型训练 导入第三方库 from keras.preprocessing.image import img_to_array from keras.models import load_model impor…

将 Hexo 部署到阿里云轻量服务器(保姆级教程)

将 Hexo 部署到阿里云轻量服务器(保姆级教程) 顺哥轻创 1 前言 作为有梦想的,有追求的程序员,有一个自己的个人博客简直就是必须品。你可以选择 wordpress 这种平台,直接使用,在任何地方只要有网络就能写博客。还可以选择 hexo 这种静态博客,但是发文章就没有那么随心…

抵御网络威胁的虚拟盾牌:威胁建模

威胁建模是一个允许您管理因日益复杂且不断变化的 IT 安全威胁而产生的风险的过程。为了保护敏感系统和数据&#xff0c;主动了解和应对这些威胁至关重要。 威胁建模是识别、评估和减轻这些威胁的关键过程&#xff0c;确保组织准备好面对不断出现的新的复杂挑战。 本文将详细…