c语言指针

[亡魂溺海] 提交于 2020-02-15 07:50:02

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;
}

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!