C语言
雨忆,静守微凉
这个作者很懒,什么都没留下…
展开
-
free释放指针内存的问题
在之前的学习中我们了解过值传递和地址传递的不同。方式1采用值传递,所以 me = NULL 并没有改变实参指针的指向,而是改变了实参副本的指向。方式2采用地址传递,所以 *me = NULL 可以修改指向,这两点与我们之前的学习是相符的。原创 2023-10-09 19:12:15 · 55 阅读 · 1 评论 -
常量指针与指针常量
仔细观察 *p 的位置, 与 const int i 中变量所在的位置一样,如此就很好理解了,变量 i 的值不可以被修改,同理 *p ,即 p 所指空间的内容不可以修改,但通常我们会令 p 指向一个变量,直接修改变量值的方法还是可用的。以 strcpy 函数为例,参数二是一个常量指针,这就意味着对源字符串操作的同时并不会改变其内容,所以当你看到一个为常量指针的形参,就可以大胆的传入参数,而不用担心传参的同时内容被修改。根据常量指针,可修改指向,不可以修改内容的性质,可有如下应用。原创 2023-09-25 11:43:25 · 54 阅读 · 1 评论 -
strncmp函数实现单个字符的比较
strncmp函数实现单个字符的比较原创 2023-09-18 10:34:32 · 393 阅读 · 0 评论 -
数组与指针在访问元素时的地址自增问题
可以观察到,指针加一之后,仍然增加4个字节,指向元素 arr[0][1]的地址, 但是 arr + 1却增加了20个字节长度,刚好是一整行元素所占空间大小。可以看到,无论是数组加一还是指针加一,都能够在地址中增加一个int的字节长度,准确访问到元素 ”2“,但这在二维数组中却不同。原创 2023-09-19 16:29:25 · 219 阅读 · 0 评论 -
strcpy在修改指针内容时的错误
此处指针p指向字符串常量的地址,既然是常量,那么通过间接方式来修改值也是不可以的,该地址只有可读性,不可以使用strcpy来操作,只能使p指向一块新的常量地址。当我们试图修改一个字符串的内容时,通常会采用strcpy的方式,因为直接对字符串赋值是不允许的。因为此时的str代表地址常量,而常量不可以被修改。同样,在使用指针时也有类似的问题。但仍要确保原地址空间足够容纳新的字符串。原创 2023-09-20 20:58:58 · 213 阅读 · 1 评论