printf 指针地址_指针搞都不懂,好意思说自己会C语言?

f52534b45ca6ec2b040f2f081514e6c9.gif

C语言面试必问知识点之「指针」

一、指针相关概念

  • 指针与地址

    • 我们使用的计算机,系统为了更好地管理我们的内存,就为内存区的每一个字节都分配一个唯一编号,这就是“地址”。

    • 指针的实质就是地址,就是这一个个编号。

  • 指针变量

    变量在编译的时候系统要为它分配一个地址,如用另一个变量来存放这个地址,那么这个变量就叫指向变量的指针变量。

  • 指针的定义(type *变量名;)

    • int *p;

    • 表示该变量的类型是一个指针变量,指针变量名是p而不是*p

    • 如果在同一行定义多个指针变量应该是:int *p1, *p2;而不是int *p1, p2

  • 指针的初始化

    type *变量名 = 地址;
  • 例子

    #include int main(){    int a = 100;    printf("%d\n",&a);    int *c = &a;    printf("%d\n",c);    return 0;}

二、指针变量的使用(如何通过指针变量访问和运算)

  • 指针变量访问

    定义一个指针变量,并且指向一个地址

    int a = 10;int *p = &a;*p = 100;printf("a:%d\n",a);
  • 指针运算

    定义一个指针变量,指向一个地址,并对指针做自增自操作

    #include int main(){    int a = 10;    int *p = &a;    printf("p:%d\n",p);    p++;    printf("p:%d\n",p);    return 0;}

三、数组指针

  • 数组指针

    数组指针,见名知意就知道是数组的指针,也就是数组的地址,在定义指针变量时,*变量名一定要带上(),不然就是定义指针数组

    int main(){    int array[5] = {1,2,3,4,5};    printf("%d\n",&array);    int (*p)[5] = &array;    printf("%d\n",p);    return 0;}

四、指针数组

  • 指针数组

    指针数组,就是存放指针的数组,数组里的元素都是指针,在定义指针数组时,不需要加上(),不然就是定义数组指针

    int main(){    int array[5] = {1,2,3,4,5};    int *p[5];    int i;    for(i=0;i<5;i++)    {       p[i] = &array[i];       printf("%d\n",p[i]);    }    for(i=0;i<5;i++)    {        printf("%d\n",*p[i]);    }    return 0;}

五、字符串与指针

  • 字符串的表示形式

    • 数组形式:

      char str[] = "I love xdclass"; //栈

    • 字符指针形式:

      char *str = "I love xdclass"; //文字常量区

  • 字符指针形式

    char *str = "I love xdclass";

    因为常量不可修改,所以指针变量指向的字符串内容不可修改,即*str = "xdclass";这样是错误的

  • 修改指针变量的值

    char *str2 = "I love the world";str = str2;
  • 例子

    int main(){    char string[] = "I love xdclass";    printf("%s\n",string);    char *str = "I love xdclass";    char *str2 = "I love the world";    str = str2;    printf("%s\n",str);    return 0;}

六、怎么使用指针函数

  • 指针函数

    函数返回类型是指针,所以就指针函数

  • 例子

    #include // 买菜:char* buy(){    char *foods = "鸡蛋";    printf("%s买好了\n",foods);    return foods;}// 洗菜void wash(char *foods){    printf("把%s洗干净了\n",foods);}// 炒菜void make(char *foods){    printf("把%s做好了\n",foods);}int main(){    char  *foods = buy();    wash(foods);    make(foods);    return 0;}

七、怎么使用函数指针

  • 函数指针的定义

    函数返回值类型 (* 指针变量名) (函数参数列表);

    int(*p)(int, int, double, float);
  • 例子

    int printfx(int x){    printf("%d\n",x);    return 0;}int main(){    printfx(2);    int (*p)(int);    p = printfx;    p(3);    return 0;}

八、 什么是指向指针的指针

  • 什么是指向指针的指针?

    如果一个指针变量存放的是另一个指针变量的地址,则称这个变量为指向指针的指针变量或指向指针的指针

  • 定义方式

    数据类型 **变量名

  • 例子

int main(){    int a = 100;    int *p = &a;    int **pp = &p;    printf("a:%d\n",a);    printf("p:%d\n",*p);    printf("pp:%d\n",**pp);    return 0;}

377d2079cc5ec357076e2facd016c875.gif 8241724395a6dee92b280c33cc53b798.gif 74b72cfd267402f2616e700d87f1bb5c.gif

# Louis讲师 #

- 手把手带你走进指针的世界 -

1f84f2dbbb8b1f3416a77be44da1c96f.png

86fd5c820715c59ff5445513b5176f30.gif速戳,观看「C语言教程」!

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

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

相关文章

开启数据科学职业生涯的8个基本技巧

摘要&#xff1a; 本文为数据科学家开创数据科学事业铺平了道路。只要按照这八个小贴士来做&#xff0c;你就能让自己的职业生涯有一个良好的开端。Nick Bostrom&#xff08;译者注&#xff1a;Nick Bostrom是牛津大学哲学系的教授&#xff0c;是人类未来研究院的创始人和主任。…

WIAC上,华为展区都有点儿啥?

戳蓝字“CSDN云计算”关注我们哦&#xff01;谈及计算产业的变迁&#xff0c;我们了解到其先后经历了大型计算机、小型机/x86服务器阶段&#xff0c;并同时开创了敏捷、创新、体验好、省成本的Cloud 1.0以及Cloud 2.0时代&#xff0c;在云计算、5G与AI等创新技术不断叠加发展的…

【技术系列】浅谈GPU虚拟化技术(第一章)

摘要&#xff1a; GPU深度好文系列&#xff0c;阿里云技术专家分享 第一章 GPU虚拟化发展史 GPU的虚拟化发展历程事实上与公有云市场和云计算应用场景的普及息息相关。如果在10年前谈起云计算&#xff0c;大部分人的反应是“不知所云“。但是随着云计算场景的普及&#xff0c;概…

php如何删除数据mysql数据库_php如何删除数据库

php如何删除数据库1、首先查看有哪些数据库2、使用php删除test2<?php $dbhost localhost; // mysql服务器主机地址$dbuser root; // mysql用户名$dbpass root; // mysql用户名密码$conn mysqli_connect($dbhost, $dbuser, $dbpass);if(! $conn ){die(连接失败: . mysq…

Mac 神兵利器(二) 极简软件清单

摘要&#xff1a; 作为一个非常爱好折腾的Mac重度用户&#xff0c;在尝试了不少于50次重装系统经历以及安装了几乎所有软件类别的N多软件后&#xff0c;决定分享一下自己的软件清单。 选择app的三个原则&#xff1a; 尽量使用系统原生软件&#xff0c;比如日历&#xff0c;提醒…

解决 idea 运行 Spring Boot 项目启动慢的问题

同事win10启动Spring Boot工程只要3秒左右&#xff0c;我的启动要30秒。开始以为是CPU差距太大&#xff0c;后来才觉得不是这样&#xff01; 解决方案 hostname命令查看自己的 hostname 注意修改 hosts 文件时&#xff0c;ip 与域名之间要换成两个 tab 键。 127.0.0.1 PC-2…

亚马逊首席科学家李沐「实训营」国内独家直播,马上报名 !

开学了&#xff0c;别人家的学校都开始人工智能专业的学习之旅了&#xff0c;你呢&#xff1f;近年来&#xff0c;国内外顶尖科技企业的 AI 人才抢夺战愈演愈烈。华为开出200万年薪吸引 AI 人才&#xff0c;今年又有 35 所高校新增人工智能本科专业&#xff0c;众多新生即将开展…

Windows Server Version 1709 管理之入门篇

摘要&#xff1a; 相信有部分同学们会有这样的体验&#xff0c;在公有云上购买了Windows Server Version 1709数据中心版的虚拟机&#xff0c;通过远程连接进去之后&#xff0c;里面全是黑乎乎的一个命令行&#xff0c;其它啥也没有。这&#xff0c;一脸懵懂啊。 相信有部分同学…

切面是异步还是同步操作‘_细说JS异步发展历程

知其然知其所以然&#xff0c;首先了解三个概念&#xff1a;1.什么是同步&#xff1f;所谓同步&#xff0c;就是在发出一个"调用"时&#xff0c;在没有得到结果之前&#xff0c;该“调用”就不返回。但是一旦调用返回&#xff0c;就得到返回值了。换句话说&#xff0…

数据科学家需要掌握的10项统计技术,快来测一测吧

摘要&#xff1a; 本文给出了数据科学应用中的十项统计学习知识点&#xff0c;相信会对数据科学家有一定的帮助。无论你是不是一名数据科学家&#xff0c;都不能忽视数据的重要性。数据科学家的职责就是分析、组织并利用这些数据。随着机器学习技术的广泛应用&#xff0c;深度学…

java获取mysql的自增列_java - MyBatis如何获取Mysql自增id

问 题INSERT INTO USER(name,age,address,loan_type)VALUES(#{name},#{age},#{address},#{loanType});user表中id自增&#xff0c;添加过一条数据后&#xff0c;可以得到主键id&#xff1b;DEBUG [main] - > Preparing: INSERT INTO USER(name,age,address,loan_type) VALUE…

hosts文件位置在哪里

C:\Windows\System32\drivers\etc\hosts

反转!2019程序员吸金榜来了,AI程序员刷爆了..

前两天在网上发现一个热门话题&#xff1a;“做开发一年&#xff0c;在北京月薪不到1万&#xff0c;有点迷茫。” 其中&#xff0c;这个回答我永远忘不了&#xff1a;在这短短的一条信息里&#xff0c;小编佩服不仅仅是毕业一年的AI程序员拿到年薪60万&#xff0c;而是这一番回…

前端详细设计文档怎么写_UI设计师简历应该怎么写?

像这种分享&#xff0c;常规开篇都应该说说当前的就业趋势啦&#xff0c;分析分析行业形势啦这类的但我不想按流程写行业不论什么时候分析&#xff0c;它都没好过&#xff0c;什么红利期什么风口&#xff0c;那更是从来没赶上过。但凡我能跟点风&#xff0c;我也不能到现在还没…

阿里云携领先SDN能力,亮相全球网络技术盛会ONS

摘要&#xff1a; 网络通讯届盛会Open Network Summit(ONS)于3月29日落下了帷幕。作为开源网络届首屈一指的世界性大会&#xff0c;今年在洛杉矶举办的ONSNA2018已经是第七年举办了。参会者囊括了来自电信运营商、云服务提供商、网络设备制造商、芯片厂商、网络软件开发商、研究…

容器开启数据服务之旅系列(一):Kubernetes如何解自建PostgreSQL运维之痛

摘要&#xff1a; 通过阿里云Kubernetes容器服务,开启你的数据服务之旅 &#xff08;一&#xff09;云上运维自建数据库之痛&#xff0c;使用容器服务自动恢复数据库postgresql实例 概述 本文为大家介绍一种容器化的数据服务 posgresql db on ACK&#xff0c;通过使用云盘自动挂…

今日头条技术架构分析

戳蓝字“CSDN云计算”关注我们哦&#xff01;今日头条创立于2012年3月&#xff0c;到目前仅4年时间。从十几个工程师开始研发&#xff0c;到上百人&#xff0c;再到200余人。产品线由内涵段子&#xff0c;到今日头条&#xff0c;今日特卖&#xff0c;今日电影等产品线。一、产品…

mysql图书管理数据库的三个关系模式_数据库 考虑如下关于图书馆的关系模式,用关系代数写出查询(数据库系统概念第六版6.14)...

贝尔梅尔娜美2019.03.15采纳率&#xff1a;60% 等级&#xff1a;39已帮助&#xff1a;91565人数据库系统的基本概念数据&#xff1a;实际上就是描述事物的符号记录。数据的特点&#xff1a;有一定的结构&#xff0c;有型与值之分&#xff0c;如整型、实型、字符型等。而数据…

dom文档对象手册_HTML5学习之DOM编程

DOM是Document Object Model的缩写&#xff0c;中文名称是文档对象模型。DOM是处理HTML页面的标准编程接口&#xff0c;【前端精选40G资料包赠送co&#xff0c;每日新闻资讯ding,每天进步一点点bb&#xff0c;小写英文为微信】DOM可被JavaScript用来读取、改变HTML的内容和结构…

Kubernetes之路 2 - 利用LXCFS提升容器资源可见性

摘要&#xff1a; 这是本系列的第2篇内容&#xff0c;将介绍在Docker和Kubernetes环境中解决遗留应用无法识别容器资源限制的问题。本系列文章记录了企业客户在应用Kubernetes时的一些常见问题 第一篇&#xff1a;Java应用资源限制的迷思 第二篇&#xff1a;利用LXCFS提升容器资…