码迷,mamicode.com
首页 > 编程语言 > 详细

c语言指针

时间:2019-04-21 14:24:56      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:表示   全局   函数   并保存   c语言指针   res   标识   标识符   clu   

1.计算机会为变量在存储器中分配空间。

2.局部变量位于栈中。

3.全局变量位于全局变量段。

4.指针只是一个保存“存储器”地址的变量。

5.&运算符可以找到变量的地址。

6.*运算符可以读取存储器地址中的内容

7.*运算符还可以设置存储器地址中的内容

如: int x = 3;  int *address = &x;

*address中保存的就是x变量的存储地址

通过&提取x的地址,保存在了*address中

#include <stdio.h>
int main()
{

int x = 3;
int *address = &x;

// 打印结果:一样相等

printf("%p----%p", *address, x);
return 0;
}

讲解:

&运算符用于接收一个数据并获取地址 而  *运算符则是用于接收一个地址并保存数据

c语言中的指针在其他语言中叫法为引用类型,*就算对于地址的解析,生成具体的值

相当于其他语言中的,引用地址的具体值

 

C语言中声明一个指针变量:

指针变量是什么呢?

答:用来保存内存地址的变量,相当于其他语言的引入地址传给函数假参

声明指针变量:

int *名称(或标识符) =  &变量;

如:

int x = 3;

int *address = &x;

&提取了变量x的地址并赋值给了address变量,*就是接收地址来表示这是一个指针变量

这时如果你去改变*address的值你会发现,x的值也被改变了

*address = 666; 那么 x 也被改变成了666

因为*address 和 &x 就是同一个内存地址

如:

#include <stdio.h>
int main()
{
int x = 3;
int *address = &x;
*address = 666;
printf("%i----%i", *address, x);
return 0;
}

如果将格式化输出符,改变%p以16进制格式打印输出

#include <stdio.h>
int main()
{
int x = 3;
int *address = &x;
*address = 666;
printf("%p----%p", *address, x);
return 0;
}

打印结果: 地址相同,自行测试

c语言指针

标签:表示   全局   函数   并保存   c语言指针   res   标识   标识符   clu   

原文地址:https://www.cnblogs.com/xiaolantian/p/10744887.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!