C语言指针4

1.对代码:

 1.int a=10;

 2.int * p =&a;

 3.int **pp=&p;

上述的2中的*告诉了我p是个指针,前边的int告诉我p指向的数据类型是int类型

类似可得3中的第二个*告诉了我pp是个指针,前边的int*告诉我pp指向的数据类型是int*类型

4.编译器在处理arr[i]的时候,是先将其转化为*(arr+i)再进行下一步操作的

而对arr[i][j],先将其转化为*(*(arr+i))再进行下一步操作

5.开始深入了解指针了要

6.char a = 'w';

char *p = &a;

则p是一个字符指针

7.对char* p = "asdfgh";

这是将 "asdfgh"的首字符的地址存入了p中

可以将"asdfgh"想象成一个字符数组,但是这个数组是不能被修改的(用好const)

下列代码

printf("%c\n","asdfgh"[3]);

和printf("%c\n",p[3]);

打印出来的都是f

当常量字符串出现在表达式中的时候,它的值是第一个字符的地址

8.C语言会将常量字符串存储到单独的一个内存区域

9.数组指针是指向数组的指针

就如同整形指针是指向整形的指针一般

而上述中的数组指针里边存放的是数组的地址

即int arr[10];里的&arr

10.int*  p1[10]

是指针数组

int  (*p2)[10]

是数组指针,指向的数组有10个元素,且元素类型是int

11.对类似于这样的等式:

int  (*p)[10]=&arr;

因为左边的变量类型是int  (*)[10],所以右边的数据类型也是int  (*)[10]

12.数组指针就是一个指向数组的指针而已

13.对代码

int *p = &arr;

其中的*p==*&arr==arr

所以arr[i]==(*p)[i]

14.对二维数组:首元素的地址其实就是第一行元素的地址

其实二维数组就是一维数组的数组,所以形参中如果要用指针接收二维数组的话,那么就要用到数组指针,例如:int  (*arr)[5](后边那个5指的是二维数组的列)

15.*&arr[ ]即arr数组首元素的地址

16.用数组指针接收二维数组的个例

搜用数组指针接收二维数组的个例

17.不能学得太细

18.函数指针变量是用来存放函数的地址的

19.在代码

函数名和&函数名得到的都是函数的地址

可以用

int (*pf)(int ,int )=&Add;

来存放函数的地址

然后 我们可以用

(+11).int r = (*pf)(1,5);

来调用这个函数

上边的那个定义函数指针变量中,&Add改为Add也可以

上边的(+11),那个(*pf)换为pf也行

20.int()3.14是强制类型转换

21.函数调用不能传类型

22.关于函数指针的特别声明搜函数指针的特别声明

23.关于函数的重命名搜关于函数的重命名

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值