指针基础概念

第一节;简述指针的一些概念
都是在C的语言基础上的;本人开始细学指针,所以有错误或不严谨的地方请大家多多指出。
刚开始可能会有的晕,但详细介绍的;
一;关于地址的一些概念

1。内存单元;在计算机中,所有的数据都是存放在内存中的,一般把内存中的一个字节称为一个内存单元,不同的数据类型所占用的内存单元数不一样,如int占用4个字节,char占用1个字节。

2。内存单元的编号;为了正确地访问这些内存单元,必须为每个内存单元编上号。每个内存单元的编号是唯一的,根据编号可以准确地找到该内存单元。单元编号也是有地址的,

3。指针;内存单元的编号叫做地址,也称为指针。因此指针就是地址,是常量;(这里就可以区分一下数组名是否是常量了)

4。内存单元的指针与内存单元的内容是不同的两个概念;这很容易区分的;内存单元的指针就是它的地址,就是它的编号;而内存单元的内容就是这个内存单元里面的东西;

二;关于指针变量

1指针变量;指针变量是变量,是存放指针的变量;一个指针变量的值就是某个内存单元的指针或者说是某个内存单元的地址;

2指针变量与指针是两个完全不同的概念;但我们常常会把指针变量读写成指针;因此不要觉得奇怪;

3并且在指针变量使用前必须要有确定的指向即指针变量的初始化;这是使用指针最常见的错误,

三; & 与 *

&;取地址运算符。就是取地址用的。即&m;就是m变量在内存中的实际地址。&是一元运算符,规定&只能取内存(不要忘记还有一种可以寄存在寄存器中)中的变量的地址,也就是说通过使用&可以获得相应变量的地址。不知道大家发现没,我都是说的可以取变量的地址。那么常量呢?

const;常量可以输出它的地址例如;(const int a = 1;printf(“%p”,&a);)但是不能改变它的值,也就是说不能用(const int a = 1;scanf (“%d”,&a);)因为常量不能改变;并且const必须赋初值(注意const指向指针时可以不赋初值);下面都有事列验证的;

define;说道常量与const是不是有人想到了# define I 10 ,是不是只要&i就会报错;嘻嘻……补充一下,define这只是一个宏,只是一个替换作用的,这种定义的量连地址都没有,可以把他看成一个替换的运算,从而也有了国二的宏运算了;宏运算就是简单的替换,而不会四则运算,因此在使用是只要原样替换就OK了。

哈哈;还有一点就是指针(这里说的是指针变量)也是变量所以也可以用&来获取指针变量的地址;

#include<stdio.h>
//#define i 1//如果这样定义那么就会报错说常量不能取地址;因为这里是宏,没有地址的; 
int main()
{
    const int i = 0;//如果是这样就可以? 
    const int i ;//const必须赋初值否则会报错的;(也就是在定义的时候) 
    const int* i; //const指向指针时可以 不赋初值; 
    // scanf("%d\n",&i);
    // printf("%d\n",&i);
    //数组名是常量但我们又经常看到&a;printf("&a = %p\n",&a);这是正确的
    return 0 ;

}

;看到应该不陌生吧;乘法就是用表示的,还有指针定义里面也用了吧,这次我们所细说的*是取值运算符。它一般通过与指针结合使用,获取指针所指向的变量的值。这个感觉没什么说的,就是取一个地址里面的内容;这个意思。

四;关于指针变量的一般形式;
类型说明符 * 变量名;
类型说明符;就是表示该指针变量指向的变量的数据类型,并且该指针只能指向该数据类型的变量。
变量名;表示指针变量的名字;

五;一些简单的例子;
1;char * p ;//定义一个指向char类型的指针变量型的,特别注意,指针(这里就是指的指针变量)在使用前不但要定义更要初始化也就是要有指向才能使用;

2;int * p ;//也是同里可得;定义一个指向int类型的指针变量型的

3;一个简单的指针的应用;
程序一;

#include<stdio.h>
int main()
{
char stuname='1', name;//定义字符变量; 
char * p, *pstu;//定义指向字符型变量的指针变量; 
pstu = &stuname;//pstu指向stuname; 
p = pstu; //将指针变量pstu赋值给指针变量p 
name = *p; //将指针变量p所指向地址内的值赋值给name; 
printf("%c %c %c %c",name, *p, *pstu, stuname);//1 1 1 1  

return 0 ;

}

程序二;

#include<stdio.h>
int main()
{
int num;
int * p; // 定义指向整型变量的指针变量
p = &num; //指针变量p指向变量 num;
//特别注意指针在使用前要有明确的指向;
*p = 5; //给p指向的变量赋值; 
printf("%d %d",num, *p); //5 5

return 0 ;
}

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值