初步学习C语言指针

指针即存储了目标数据对象的内存首地址和目标数据对象所占用的空间大小。

内存地址,像酒店的房间一样,每个房间都有一个房间号。

C语言指针语法


#include <stdio.h>
/*
时间:2022-04-16 19:04
作者:sgbl888
功能:初步学习指针(存储了另一个数据对象的内存首地址及所占用空间大小)
知识点:
    1、&符号是取数据对象的内存首地址
    2、*符号是对对应的数据对象内容取值或改值
    3、%p是指针专用占位符(以十六进制输出)
    4、32位系统指针占用4个字节,64位系统指针占用8个字节
    5、不能把一个指针赋值给不同类型的指针,除非强制转换
*/
int main(){
    int n = 123; //声明整型变量n
    int* pn = &n; //声明int类型指针。也可写为 int*pn或int *pn。建议用int*这种方式比较直观

    printf("n = %d\tn = %d\n", n, *pn); // *pn取指针对应的内容
    printf("n的内存首地址为:%u\t或 %p\n", pn, pn);

    char c1 = 8;
    char* pc = &c1; //char*表示数据对象所占用空间大小,pc则存储了数据对象的内存首地址
    printf("c1 = %d\tc1 = %d\n", c1, *pc);
    printf("c1内存首地址为:%u\t或 %p\n", pc, pc);

    //打印指针所占用的空间
    printf("---------------\n");
    printf("pointer pn use %zd Byte\n", sizeof pn);
    printf("pointer pc use %zd Byte\n", sizeof pc);
    printf("----------------\n");

    //指针赋值、强制转换
    //pn = pc; //把char*指针直接赋值给int*指针,错误提示:'int *' from incompatible pointer type 'char *'
    *pn = 567;
    printf("n = %d\n", n); //虽然没有对n进行赋值,但pn指向n。因此对pn赋值也修改了N的值。因为它们两个的内存地址相同

    pc = (char*)pn; //强制转换
    printf("pc = %p\n", pc);
    printf("pc对应的内容:%d\n", *pc);

    return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值