指针与指针变量
来源:互联网 发布:新加坡莱佛士书院知乎 编辑:程序博客网 时间:2024/06/05 03:55
指针即地址,学习指针首先要知道指针与指针变量的区别。
指针和指针变量是两个概念,指针即是地址,而指针变量是存放地址的变量。
在c语言中&x表示x的地址,*(&x)表示取出该地址单元的内容,即x变量的值。写到这里我就想到了scanf(“%d”,&x),输入时正是给出了x的地址,向该地址指向的空间存储输入的内容。
指针变量的一般形式如下:
类型名 * 指针变量 [=初始值];
注意:指针变量中的内容存的是普通变量的地址,指针变量是占内存空间的。
int *point;
point 中的值是一个随机地址,再定义一个指针变量时可以对指针变量进行初始化,如下:
int x=6;int *point = &x;
或者将指针变量初始化为NULL:
int *point = NULL;
NULL是一个不指向任何内存位置的值,对于指针他表示0;
下面看一段程序,此程序段说明了指针与运算符 ++ 如何连用:
#include<stdio.h>int main(){ int num=10; int *pointer=# printf("num = %d, *pointer=%d \n",num,*pointer); *pointer+=15; printf("num = %d, *pointer=%d \n",num,*pointer); printf("输入一个整数:\n"); scanf("%d",pointer); printf("num = %d, *pointer=%d \n",num,*pointer); ++*pointer; printf("num = %d, *pointer=%d \n",num,*pointer); return 0;}
(一)、指针变量指向普通变量,则可通过指针来修改变量的值。
(二)、int *pointer=&num是将num的地址赋给了指针变量pointer,所以在输入函数中可以用pointer代替&num。这里要注意一点,如果自增运算符放在*pointer之后,一定要这样写(*pointer)++,否则*pointer++递增的不是num的值,而是pointer的值。pointer是指向int型的指针,所以自增一,其值会增加sizeof(int)字节,不能理解成简单的加1。
指针变量用作函数参数:
函数参数也可以是指针类型,他的作用是将一个变量的地址传送到另一个函数中。这里就牵扯到值传递和地址传递两种参数传递方式,值传递不会影响主调函数中实参的值,若要改变实参的值就要采用地址传递。通过地址传递,被调函数就可以通过地址直接操作实参的值。
阅读全文
0 0
- 指针与指针变量
- 指针与指针变量
- 指针变量与变量
- 指针变量的++与--
- 指针与变量类型
- 指针变量与++ --结合
- 6.2、变量与指针
- 指针与变量
- 指针与引用变量
- C++变量与指针
- 指针变量与变量地址
- 指针变量与指针的区分
- 指针与指针变量(转)
- 指针与指针变量的区别
- 浅谈下指针与指针变量
- 指针变量与函数指针形参
- 关于定义一个指针与指针变量
- C语言指针-----指针与变量
- python自学笔记3
- linux汇编学习(6)---添加根文件系统
- Java学习之训练---求数组的交集、并集以及只在A数组中出现的子串集合
- XML文件作为数据库
- 742. Closest Leaf in a Binary Tree
- 指针与指针变量
- vue实现app问题总结(一)vue-cli本地开发数据Mock
- Ubuntu 14.04快速搭建SVN服务器及日常使用
- 要整理的内容
- 交换机(一)
- 线性神经网络
- 【TensorFlow】优化方法optimizer总结(SGD,Adagrad,Adadelta,Adam,Adamax,Nadam)解析(十三)
- squid介绍及其简单配置
- NYACM_010