二级指针

二级指针的创建与使用


/*  */
#include <stdio.h>
#include <stdlib.h>


void main( int argc ,  char **argv )
{
	int *ip;	
	int  **i;

	int a;	// 系统会自动分配一个地址空间给 int型变量a
// 要区分指针的地址和指针指向的地址


	ip  = &a;	 
	*ip = 20; 
// ip指针指向 "存放变量a的地址空间"
// ip本身也占用内存空间 -- 通过&ip可以知道ip指针的地址,该地址上存放的是 "变量a的地址"

	printf("&a  =%p\n\r",&a);		// 打印出变量a的地址
	printf("&ip =%p\n\r",&ip);		// 打印出 ip指针的地址
	printf("ip  =%p\n\r",ip);		// 打印出ip指针指向的地址, = &a
	printf("*ip =%d\n\r",*ip);		// 打印出 20
	

	i = &ip;		// i 指向的地址是 ip的地址
	
	printf("i  =%p\n\r",i);	// 打印出来是 ip的地址, = &ip
	printf("*i =%p\n\r",*i);	// 打印出来是 ip指向的地址, = ip
	printf("**i=%d\n\r",**i);	// 注意是 %d; 打印出来是20, = *ip
	printf("&i =%p\n\r",&i);	// 这个是i的地址,该地址存放的值是 &ip

}

/* 
	注意:
	int *ip;
	ip  = (int *)0x5600 0000	// 注意不能是(unsigned int *)也不能不加(int *);必须强制转换为和定义指针时一样的类型
	*ip = 10;
	// 如果以这种形式在ubuntu上运行,会报错,因为0x5600 0000 这个地址可能是不可访问的。
	通过定义一个变量让系统自己分配一个地址,那个地址肯定是可以使用的。
*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值