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

C语言之指针

时间:2020-12-18 12:20:42      阅读:2      评论:0      收藏:0      [点我收藏+]

标签:ast   挖掘   运算符   main函数   输出   ack   存储   print   amp   

什么是指针

在函数调用时,可以只传递一个指针,而不用传递整组数据;指针可以让两段代码同步处理用一条数据,避免了副本和共享数据。

深入挖掘存储器

每当我们声明一个变量,计算机都会在存储器中某个地方为它创建空间。如果在函数(例如main()函数)中声明变量,计算机会把它保存在一个叫栈(Stack)的存储器区段中;如果你在函数以外的地方声明变量,计算机则会把它保存在存储器的全局量段(Globals)。在函数中声明的变量通常保存在栈中。在函数外声明的变量保存在全局量区。

#include <stdio.h>
void go_south_east(int lat, int lon)
{
  lat = lat - 1;
  lon = lon + 1;
}
int main()
{
  int latitude = 32;
  int longitude = -64;
  go_south_east(latitude, longitude);
  printf("停!当前位置: [%i, %i]\n", latitude, longitude);
  return 0;
}
//试着运行这个程序,是不是跟你想的不一样,这里就体现出指针的作用
//运行结果是:停!当前位置:[32,-64]

结果分析

mian()函数中定义的longitude是局部变量,当main函数里调用go_south_east函数时,将longtitude的值复制给了lon,这是个赋值的过程,最后输出的还是longtitude,值没变,当go_south_east()函数修改了lon的值时,函数只是修改了本地的副本,也就是说程序返回main()函数时,变量longitude中保存的还是它原来的值32。
‘‘‘

include <stdio.h>

void go_south_east(int *lat, int *lon)//定义参数为指针变量
{
*lat = *lat - 1;//对指针变量进行操作
*lon = *lon + 1;
}
int main()
{
int latitude = 32;
int longitude = -64;
go_south_east(&latitude, &longitude);//&表示取该变量的地址
printf("停!当前位置: [%i, %i]\n", latitude, longitude);
return 0;
}
//这样运行结果就对了
‘‘‘

要点:

1、计算机会为变量在存储器中分配空间。 、
2、局部变量位于栈中。
3、全局变量位于全局量段。
4、指针只是一个保存存储器地址的变量。
5、&运算符可以找到变量的地址。
6、运算符可以读取存储器地址中的内容。
7、
运算符还可以设置存储器地址中的内容

C语言之指针

标签:ast   挖掘   运算符   main函数   输出   ack   存储   print   amp   

原文地址:https://www.cnblogs.com/sean-zhou0917/p/14127390.html

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