(int   *)&i 与int   increment(int   *   &   i) 相关理解的整理

Q1:
#include   "stdio.h "
void   main()
{
int   i[]={2,3};
int   *j=i;
int   **k=&j;//双指针,正确;
int   *p=NULL;

//         k=&i;   //i就表示一个数组地址,&i也表示双指针,为什么这里出错?  
//提示cannot   convert   from   'int   (*)[2] '   to   'int   **   '
//int   (*)[2]应该是数组指针吧?比如int   (*c)[2];c=arry[3][2],在这里c也是当作双指针来用的啊~

// i=(int   *)&i;//提示cannot   convert   from   'int   * '   to   'int   [2] '
// k=(int   *)&i;   //提示cannot   convert   from   'int   * '   to   'int   **   '
// k=(int   *)i;//提示cannot   convert   from   'int   * '   to   'int   **   '

p=(int   *)i;
p=(int   *)&i;
//这里的两个强制转换都可以,在这里&i和i到底有什么区别?难道&没有用吗?


A1:
i=(int   *)&i;//提示cannot   convert   from   'int   * '   to   'int   [2] '

这句肯定是错的,因为i作为一个数组名,虽然是一个指针,但却是一个常量指针,不能给它赋值  
k=(int   *)&i;   //提示cannot   convert   from   'int   * '   to   'int   **   '
这句也是错的,因为&i已经是int**的了,再加一个(int**)反而弄巧成拙了
k=(int   *)i;//提示cannot   convert   from   'int   * '   to   'int   **   '

这句也是错的,k是(int**)型的,不能由(int*)转换
--------------------------------------------------------------------------------------------
Q2:
义一个函数     比如:int   increment(int   *   &   i) 
                                          {   
                              i++; 
                              return   0; 
                                            } 

    参数:int   *   &   i     怎么理解?

A2:
1)int   increment(int   *   &   i)
                                          {  
                              i++;
                              return   0;
                                            }

increment是一个函数,其实就是int   increment(int   *     i)。。加上&只是代表按引用方式传递。。
2)&   i就是i的别名而已;表示一个整形指针的引用;
 *指针   &引用
int   *   &   i
表示一个整形指针的引用 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值