C语言指针

得到变量的地址

可以使用&运算符找到变量保存在内存中的位置

int x = 1;
printf("x的内存地址是"%p\n",&x)

%p格式符将地址以16进制格式输出。

&x将找到变量x的地址。一般我们会使用一个指针变量保存这个地址。

指针变量是一个用来保存存储器地址的变量,当声明指针变量时,需要说明指针所指向的地址中保存的数据的类型:

int *addr_x = &x;

声明一个int类型的指针变量addr_x,&x或者x变量的地址,并保存这个地址。

读取地址的内容

根据存储器的地址读取保存在那里的数据,可以使用*运算符

int v_s = *addr_x

&运算符是接受一个数据,然后获取其内存地址。

*是接收一个地址,然后获取这个数据的值。

这两个运算符正好相反。

改变地址的内容

C语言中的指针变量还可以进行运算,可以使用*运算符。

将指针变量放在赋值运算符左边。

*addr_x = 100;

代码示例

#include<stdio.h>
void go_source_east(int *lat,int *lon){
//(右边*lat)读取lat地址的lat的内容,并改变地址中的内容(左边lat*)。
*lat = *lat-1;
*lon = *lon+1;
} int main()
{
int latitude =32;
int longitude =-64;
// 通过&来找到这两个变量在内存中的地址
go_source_east(&latitude,&longitude);
printf("停!当前位置是:[%i,%i]\n",latitude,longitude);
return 0;
}

数组变量

数组变量可以用作指针

数组的指针指向的是数组第一个元素。

由此可以得到下面的等式

int d [] ={4,2,3}
d[0]==*d

地址是数字,所以可以进行指针运算,如果找存储器的下一个地址,可以增加指针的值。

d[i]=*(d+i)

数组的索引从0开始,正是为了方便找到元素的地址单元,指针需要加上的那个数字。

同时数组的索引实际表示的是当前元素到第一个元素的偏移量,可不就是0开始么。

代码示例

#include<stdio.h>
int main(){ int d[] ={1,2,3,100};
//以下四种方法相等
printf("%i\n", 3[d]);
//下标运算符:表达式 x[y] 等效于(*((x)+(y)))
printf("%i\n", d[3]);
printf("%i\n", *(d+3));
printf("%i\n", *(3+d));
return 0;
}

C语言中的指针笔记的更多相关文章

  1. C语言中的指针数组

    C语言中的指针数组是什么,像 char *a[]={"ddd","dsidd","lll"}; 这里讲一下注意如果我们使用了a也就是首元素的 ...

  2. 【ZZ】C 语言中的指针和内存泄漏 & 编写高效的C程序与C代码优化

    C 语言中的指针和内存泄漏 http://www.ibm.com/developerworks/cn/aix/library/au-toughgame/ 本文讨论了几种在使用动态内存分配时可以避免的陷 ...

  3. GO语言中的指针

    http://www.tizgrape.com/?p=100 Go语言中的指针语法和C++一脉相承,都是用*作为符号,虽然语法上接近,但是实际差异不小. Go使用var定义变量: var v6 *in ...

  4. C语言中的指针加减偏移量

    C语言指针偏移技巧(也是一个要注意的坑) - 陈杰柱的博客 - CSDN博客  https://blog.csdn.net/cjzjolly/article/details/82116772 C语言中 ...

  5. C 语言中的指针和内存泄漏

    引言对于任何使用 C 语言的人,如果问他们 C 语言的最大烦恼是什么,其中许多人可能会回答说是指针和内存泄漏.这些的确是消耗了开发人员大多数调试时间的事项.指针和内存泄漏对某些开发人员来说似乎令人畏惧 ...

  6. C语言中的指针和内存泄漏

    引言 对于任何使用C语言的人,如果问他们C语言的最大烦恼是什么,其中许多人可能会回答说是指针和内存泄漏.这些的确是消耗了开发人员大多数调试时间的事项.指针和内存泄漏对某些开发人员来说似乎令人畏惧,但是 ...

  7. C语言中的指针学习(小黑板)

    指针是C语言中的精华所在,也是C语言的危险之在,今天又重现温习了一下C语言,做了一下总结. 欢迎批阅. (1)指针的含义指针的本质也是数据类型,它是指向地址的变量.例如: { int a = 10; ...

  8. [C]C语言中的指针和内存泄漏几种情况

    引言 原文地址:http://www.cnblogs.com/archimedes/p/c-point-memory-leak.html,转载请注明源地址. 对于任何使用C语言的人,如果问他们C语言的 ...

  9. 论C语言中二级指针和二维数组之间的区别

    刚开始学习C语言的时候,觉得一个数组可以定义一个一级指针去访问,想当然的就觉得可以定义一个二级指针去访问二维数组.很显然这是错误的. 我们来看看C语言的数组在内存中的存储方式. 实际上C语言中的数组, ...

随机推荐

  1. js数组实现上移下移

    up(index) { if(index === 0) { return } //在上一项插入该项 this.list.splice(index - 1, 0, (this.list[index])) ...

  2. [ICCV 2019] Weakly Supervised Object Detection With Segmentation Collaboration

    新在ICCV上发的弱监督物体检测文章,偷偷高兴一下,贴出我的poster,最近有点忙,话不多说,欢迎交流- https://arxiv.org/pdf/1904.00551.pdf http://op ...

  3. Nginx的反向代理和负载均衡服务

    Nginx (engine x) 是一个高性能的HTTP和反向代理服务,也是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行. ...

  4. Django组件之modelformset

    ModelFormSet 基于modelform 实现的批量处理 前端: <form method="post" action=""> {% csr ...

  5. 2.Git 结构

    1.Git 结构: 使用git add命令将写的代码暂存到暂存区:使用git commit命令将暂存区的代码提交到本地库: 2. Git 结构及其代码托管中心: workSpace:工作区(写代码). ...

  6. UTF-8&Unicode,0xC0和0x80是什么?

    转载:http://blog.sina.com.cn/s/blog_7c4f3b160101dv4p.html 一个字符串长度统计的代码,如下 int calcLen(const char* _str ...

  7. css全局定位内容图片自动居中

    最近在做一个资讯站点时候,因为采集的数据,图片不居中,导致界面很不美观,所以需要全局定义下图片输出时候进行居中. .content img { max-width:800px;_width:expre ...

  8. css、js文件后的后缀作用是什么?

    文章转自:https://blog.csdn.net/yelbosh/article/details/47303247 <link rel="stylesheet" type ...

  9. django中使用form表单,数据库保存密码出现明文

  10. 深入理解JavaScript之实现继承的7种方式

    1.原型链继承 核心:将父类的实例作为子类的原型 首先,要知道构造函数.原型和实例之间的关系:构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个原型对象的指针. func ...