项目1中的指针操作

#include <stdio.h>

typedef struct {
	int a;
	int b;
}T_AB;


int main(int argc, const char *argv[])
{
	char     c;
	int  	 a;
	T_AB tTest;
	int     *p;
	int   **pp;

	/* 1.指针指向一个整型变量 */
	p = &a;
	printf("p = 0x%x, a'addr = 0x%x\n", p, &a);

	/* 2.给整型变量赋值 */
	*p = 0x12345678;
	printf("a = 0x%x\n", a);

	/* 3.指针指向一个字符类型变量 */
	p = &c;
	printf("p = 0x%x, c'addr = 0x%x\n", p, &c);

	/* 4.给字符型变量赋值 */
	*p = 'A';
	printf("c = %c\n", c);

	/* 5.指针指向一个结构体类型 */
	p = &tTest;
	printf("p = 0x%x, tTest'addr = 0x%x\n", p, &tTest);

	/* 6.感觉是当时韦老师写错了,将错就错?实际开发中不该这么用吧? */
	*p = &tTest; /* *p==tTest.a,此时把tTest的地址作为数值赋值给tTest.a变量 */
	printf("tTest.a = 0x%x, tTest'addr = 0x%x\n", tTest.a, &tTest);

	/* 7.二级指针 */
	pp = &p;
	printf("pp = 0x%x, p'addr = 0x%x\n", pp, &p);

	/* 8.一级指针指向结构体类型,最终是给结构体中的前4个字节的成员赋值,就是a成员 */
	**pp = 0xABCD1234;
	printf("tTest.a = 0x%x\n", tTest.a);
   
	return 0;
}

测试结果

    p = 0x34e5274c, a'addr = 0x34e5274c
    a = 0x12345678
    p = 0x34e5274b, c'addr = 0x34e5274b
    c = A
    p = 0x34e52760, tTest'addr = 0x34e52760
    tTest.a = 0x34e52760, tTest'addr = 0x34e52760
    pp = 0x34e52750, p'addr = 0x34e52750
    tTest.a = 0xabcd1234


    //  *p = &tTest;//注释掉该句话的执行结果
    
    p = 0xc4f3179c, a'addr = 0xc4f3179c
    a = 0x12345678
    p = 0xc4f3179b, c'addr = 0xc4f3179b
    c = A
    p = 0xc4f317b0, tTest'addr = 0xc4f317b0
    tTest.a = 0xc4f318a0, tTest'addr = 0xc4f317b0
    pp = 0xc4f317a0, p'addr = 0xc4f317a0
    tTest.a = 0xabcd1234

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值