指针最基本概念
Posted 軒邈
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了指针最基本概念相关的知识,希望对你有一定的参考价值。
#include <stdio.h>
int main(void)
int* p; //“p”是变量的名字,“int*”表示p变量存放的是int类型变量的地址
int i = 3;
p = &i; //正确写法
//p = i; //错误写法,因为“i”的类型是整型的,“p”的类型是int*型的,两者类型不一直,“p”只能存放“int”类型变量的地址,不能存放“int”类型变量的值
//p = 55;//错误写法,原因同上
return 0;
#include <stdio.h>
int main(void)
int* p; //“p”是变量的名字,“int*”表示p变量存放的是int类型变量的地址;
//int* p; 不表示定义了一个名字叫做“*p”的变量;
//正确理解: “p”是变量名,“p”变量的数据类型是“int* ”类型,所谓的“int* ”类型就是存放int变量地址的类型;
int i = 3;
p = &i; /*
解释:
1、“p”中保存了“i”的地址,因此“p”指向“i”;
2、“p”不是“i”,“i”也不是“p”,更准确的说:修改“p”的值不影响“i”的值,修改“i”的值也不会影响“p”的值;
3、“p”也是个变量,是指针变量,“i”也是个变量,但是两个变量一定不是一样的,“p”变量存放的其他普通变量的地址,“i”变量存放的值;
4、如果一个指针变量指向了某个普通变量,则 *指针变量 就完全等同于 普通变量
例子:
如果“p”是个指针变量,并且“p”存放了普通变量“i”的地址,则“p”指向了普通变量“i”
"*p" 就完全等同于 “i”或者说:在所有出现“*p”的地方都可以替换成“i”
在所有出现“i”的地方都可以替换成“*p”
5、“*p ”就是以“p”为地址的变量,即p指向的变量,“*”代表取值的意思;
*/
return 0;
/*
指针基本知识:
1、虚拟内存中每一个单元为一个编号,每一个编号为一个字节,这个编号就是地址;
2、指针就是地址,是一个概念;
3、指针变量是存放地址的变量;
4、指针和指针变量是两个不同的概念,指针是地址,指针变量是一个变量,但是通常我们叙述的指针变量简称为指针,实际含义是不一样的;
5、指针的本质就是一个操作受限的非负整数,指针不能进行乘除,但是可以相减,并且相减的对象是指向同一块连续的内存,这样相减才有意义;
*/
补充:
#include<stdio.h>
int main(void)
int a = 100, b = 200;
int* p_1, * p_2 = &b; /* p_1 和 p_2 都是局部变量,p_2 取得了 b 变量的地址,但是 p_1 是没有给其赋值,所以 p_1 此时是野指针,指向是随机的 */
p_1 = &a;/* 这里才给 p_1 初始化赋值 */
printf("Line = %d, a = %d, *p_1 = %d\\n", __LINE__, a, *p_1 );
printf("Line = %d, b = %d, *p_2 = %d\\n", __LINE__, b, *p_2 );
return 0;
以上是关于指针最基本概念的主要内容,如果未能解决你的问题,请参考以下文章