指针小解

 定义一个只有两个元素的数组a[2] = { 5,3 };  指针变量p取第一个元素 5 地址

猜想:定义一个指针变量q=p+1,指针变量p加1后 即指向第二块地址,即第二个元素 3 的地址

【即:int* q = p+1;】

int main() {
	int a[2] = { 5,3 };
	int* p = &a[0];
	int* q = p + 1;

	printf("p地址:%p\n", p);
	printf("q地址:%p\n", q);
	printf("首地址%d\n", &a[0]);
	printf("第一个元素值:%d\n", *p);

	printf("次地址%d\n", &a[1]);
	printf("第二个元素值:%d\n", *q);

	system("pause");
	return 0;
}

调试截图表明: q确实指向第二个元素的地址。

结论:指针变量每加1后,表示的就是数组的下一个元素的地址。不论是int*,  char*,  double*定义的变量都是64位地址,占8个字节

(在64位操作系统中占8个字节,  32为操作系统中占 4个字节)

但是char*类型p加1后,地址大小加1.    int*类型p加1后,地址大小加4             double*类型加1后,地址大小加8

注:                  *(p+1)    =>   p[1]  =>  arr[1]

 

 

函数指针

       函数指针是指向函数的指针变量。 因此“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。如前所述,C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向函数的指针变量后,可用该指针变量调用函数,就如同用指针变量可引用其他类型变量一样,在这些概念上是大体一致的。函数指针有两个用途:调用函数和做函数的参数

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值