printf 指针地址_指针搞都不懂,好意思说自己会C语言?
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;}
# Louis讲师 #
- 手把手带你走进指针的世界 -
速戳,观看「C语言教程」!
printf 指针地址_指针搞都不懂,好意思说自己会C语言?相关推荐
- Go基础:指针地址、指针类型、多重指针、指针运算
目录 到底什么是指针呢? 指针 指针地址和指针类型 指针取值 指针变量初始化 指针运算符 多重指针 指针运算 到底什么是指针呢? 内存就是一系列有序列号的存储单元,变量就是编译器为内存地址分配的昵称, ...
- printf 指针地址_数组指针和指针数组
首先,理解一下数组指针和指针数组这两个名词: 数组的指针:是一个指针,什么样的指针呢?指向数组的指针. 指针的数组:是一个数组,什么样的数组呢?装着指针的数组. 然后,需要明确一个优先级顺序:()&g ...
- C++指针地址和指针的值
C++指针 学过C++ 都知道,指针是一个很重要的概念,他是C++的灵魂,在上学的时候从书山了解到,指针就是指向内存的地址,然,今天和同事讨论指针传递和引用传递的时候,我说:指针传递其实就是引用传递. ...
- xftp怎么有root权限_许多人都不懂的Linux系统里的特殊权限!!你真的了解嘛?...
有的朋友一听Linux系统文件还有特殊权限,那头就要爆炸了,那还是接着看看/tmp目录和/usr/bin/passwd文件,怎么回事啊!!!看见没有啊! 不是应该只有rwx 吗?还有其他的特殊权限( ...
- c语言 怎么访问64位地址_大神用10000字总结了嵌入式C语言必学知识点……
导读:怎么做好嵌入式?相信这个问题无论问谁你都会得到一句学好C语言!今天推荐一篇大佬写的嵌入式C语言知识点总结,非常值得一读. 从语法上来说C语言并不复杂, 但编写优质可靠的嵌入式C程序并非易事,不仅 ...
- 翁恺老师C语言学习笔记(十)指针_指针运算
我们先看一段代码 #include <stdio.h>int main(void) {char ac[] = {0,1,2,3,4,5,6,7,8,9,};char *p = ac;pri ...
- C语言指针(函数指针数组,二级指针)
int (*p[num])( char*,int,int );int (*(*p)[num])(int a); 上一篇博客最后的两个例子的答案分别是:函数指针数组,函数指针数组的指针. 函数指针数组指 ...
- printf 指针地址_c语言对指针的理解
先来讲一下本人学指针的经历:大一的时候刚接触c语言对指针这东西真的是太迷了,感觉麻烦难懂不想其他语言一样.但是搞懂以后就被指针的魅力吸引甚至喜欢上c语言.不多讲,开始!(文章可能有些长,但放心全是基础 ...
- c 指针地址 突然改变_开发笔记 - Cpp - 指针 - 1.1 如何理解指针
写在最前 作为在贵乎的第一篇文章吧... 允许我加点废话(求轻喷... 应该是从19年的下半年开始,虽然顶着算法工程师的title,但做的很多事情都是开发了,然后19年12月跳槽之后,到了新的环境并开 ...
最新文章
- 5.13T1Send 题(send)
- POJ 1806 Manhattan 2025
- 关于创业公司产品开发原则
- 【简单数论】H - A^X mod P_HRBUST - 2049_31行代码AC
- javafx 动画没效果_通过JavaFX标注制作动画效果
- Linux : shell基础(慕课网Linux达人养成计划课程笔记)
- 蔚来资本宣布完成约4亿美元二期基金募集
- Ibatis SqlMapclient对象
- 使用seaborn制图(箱型图)
- 轻轻松松的记住Linux系统目录结构
- Laravel 在哪些地方使用了 trait ?
- Android高手进阶:Adapter深入理解与优化
- 四级重点高频词汇表_零基础,教你裸过英语四级!这些方法请收藏
- linux大容量硬盘 克隆到小硬盘_试玩免费硬盘克隆软件 再生龙 分区备份及恢复篇...
- css3图片倾斜3d动画效果
- 初识F5之BIGIP-LTM负载均衡
- TJA1050国产替代DP1050T高速 CAN 总线收发器
- ssm+java+vue基于微信小程序的美容院管理系统#毕业设计
- 学编程很枯燥_技术文档不必很枯燥
- 试试54款开源服务器软件
热门文章
- Redis-3.2.4服务搭建
- ACMMM2021|在多模态训练中融入“知识+图谱”:方法及电商应用实践
- 对话猿辅导:阿里云远程办公零信任落地创新安全
- 科学地花钱:基于端智能的在线红包分配方案
- 第九弹 - 脚本模式与参数视图
- 技术三板斧:关于技术规划、管理、架构的思考
- 重磅发布:阿里开源 OpenJDK 长期支持版本 Alibaba Dragonwell
- 争分夺秒:阿里实时大数据技术全力助战双11
- 云厂商靠不靠谱?“国家级标准”鉴定结果来啦
- Web3.0 兴起之际,元宇宙这杯羹怎么分?