C语言指针3

1.可以用

int a = 10;

int *p = &a;

if(p != NULL)

...

else(或没有else也行)

...

来达到一个   如果p是空指针那就不使用它,是非空指针那就使用它   的目的

2.assert()括号中如果条件为假那就会报错,而且加入此语句的话会对程序的运行拉长时间

3.统一关闭assert()方法:在#include<assert.h>上一行添加

#define NDEBUG

还有就是:在release版本里边,一般会将assert禁用掉

4.建立一个字符数组例子:

char arr[ ]= "asdfgh";

5.strlen函数返回的值是size_t类型(这类型用%zd打印)

6.const能固定值

7.size_t就是unsigned int

8.int arr[10]= { 0 };

&数组名   取出的是整个数组的地址,(这里的数组名表示整个数组的地址)

除了那两种情况外,其他的数组名都指的是数组首元素的地址

&arr[0]与arr

一样

三者区别可以体现在地址的++上边

&arr[0]与arr同时加了4

&arr加了40

9.对代码

int arr[10] = { 0 };

int *p = arr;

此时p<==>arr

10.对数组和指针因为之间的关系而产生的一些别的表达形式在微信(搜数组与指针衍生式子)

11.在主函数中创建了一个一维数组而后将它传输到函数中,而函数又用的是类似于int arr[ ]这样的式子来接收,那么接收到的也只是一个数组首元素的地址而已,而且此时在函数形参那里其实没有创建数组,这里的int arr[ ] 本质上还是个指针。所以sizeof(arr)计算的是指针arr的大小。不过形参那里可以写成指针的形式(int *p),也可以写成数组的形式(int arr[ ])。二者只是形式上有所差异,本质上还是     完全相同    的,都是指针

12. 对整形数组arr,在编译器看来arr[i]等价于*(arr+i),即先将前者转化为后者再进行下一步操作

13.所以最好一定要在主函数中计算好数组的元素个数sz再将之传给函数,这样函数才能打印数组之中的全部元素

14.数组传参时传的都是数组首元素的地址,做不到传递整个数组

15.冒泡排序详解在微信(搜冒泡排序)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值