指针

第八讲:指针

指针变量: 存储地址的变量;

 指针定义时,数据类型的作用,告诉系统我是一个什么类型的指针;

 指针所占字节数: 只与系统操作位数有关,32 操作系统 4个字节,64 操作系统 8个字节;

 int a = 10;//整型变量 a

 int *p = NULL;//指针变量 p,p的数据类型是: int *

 指针变量定义时,数据类型的作用 (以int 为例):

 1.告诉系统我是一个int 类型的指针

 2.在指针运算时每次偏移的字节数 int ----- 4 个字节

 3.指针的控制字节数,int 控制 4 个字节

 

 char *q = NULL;//指针q 的类型是: char *

 *号的作用:

 1.告诉系统,接下来定义的变量是指针变量

 2.

 //平时我们所说的指针,其实就是 指针变量,指针中存储的是地址

 //指针变量的输出

 printf("%p\n",p);

//取值运算符: *

    printf("%d\n",*p);

    //指针变量的赋值: 指针重指向,就是对指针重新赋值的过程.

    //指针的运算: 只有加减运算,

 

    printf("%p\n",p - 1);

int a = 10;

    int *p = &a;//在定义时,*p的作用,告诉系统定义的是指针变量

    *p = 30;// *p在等号左侧时是对p中存储的地址进行赋值操作,否则是取值操作

 

    printf("%d\n",a);

指针与数组

    int a[] = {9, 5, 3, 7};

    数组名是数组首地址,恒等于数组首个元素的地址,但是数组名是一个常量地址

    printf("%p\n",a);

 

    printf("%p\n",&a[0]);

int *p = a;

    //使用指针操作数组中的元素

    //取值

    printf("%d\n",*p);

    printf("%d\n",*(p + 1));

    printf("%d,%d",*(p + 2),*(p + 3));

    

    int b[] = {3, 8, 4, 9};

    p = b;//指针重指向

 

    printf("%d\n",*p);

数组与指针的区别:

     数组名是一个常量地址,不能改变,而指针是一个变量,可以重指向(重新赋值).

字符串数组

    char str[4][20] = {"iPhone", "iPod", "iPad", "iWatch"};

    //指针数组,该数组存储的是栈区空间的地址

    char *strArray[4] = {str[0], str[1], str[2], str[3]};

    //指针数组,该数组存储的是常量区空间的地址

 

    char strP[4] = {"iPhone", "iPod", "iPad", "iWatch"};

转载于:https://www.cnblogs.com/hanpengshuai/p/4674309.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值