【翁恺C语言进阶】指针与字符串:2指针运算

简介: 【翁恺C语言进阶】指针与字符串:2指针运算

所有笔记省略了我认为在基础阶段必须掌握的内容,诸如部分的名词、符号定义以及用法,标题带有*号为个人认为重点内容。


2.1 指针运算


重点理解指针之间的加减运算。


  1. *p++如何理解


取出p所指的数据,之后将p移到下一个位置;至于为什么不需要加括号,是由于++优先级高与*的优先级。


  1. 0地址


在c语言中通过NULL这个预定义的符号表示0地址。


2.2 (*)动态内存分配malloc


值得一提的是C99以前是不支持动态数组定义的,那么这时我们应该如何定义一个动态数组。


#include<stdio.h>
#include<stdlib.h>
//使用malloc函数动态创建一个数组
int main(){
  /*
  malloc接收一个整型参数
  malloc(20)代表申请20个字节的内存空间
  返回申请内存空间的首地址
  */
  /*申请一个4*3字节的内存,返回申请内存的首地址
  但是内存有了,还要说明用什么数据类型来解析
  这段内存。
  (char *)malloc(20);
  (int *)malloc(20);
  (double *)malloc(16);
  ...
  */
  //使用malloc函数创建一个动态数组
  int i;
  int temp;
  printf("请输入数组的长度:");
  scanf("%d",&i);
  int * p = (int *)malloc(sizeof(int)*i);
  //给数组赋值
  for(temp=0;temp<i;temp++){
  printf("p[%d]=",temp);
  scanf("%d",&p[temp]);
  }
  //输出数组
  for(temp=0;temp<i;temp++){
  printf("%d,",p[temp]);
  }
  free(p);
  return 0;
}


值得注意的是我们在一个程序中可申请的空间是有限的,尤其是在大的程序开发中。因此,必须合理使用malloc函数时得合理利用free()函数对空间进行释放。

下面这个小程序就是通过循环来发现自己的计算机可以通过malloc得到多少内存,这个值是会变化的,并不固定。

image.png


目录
相关文章
|
13小时前
|
C语言
c语言指针总结
c语言指针总结
15 1
|
13小时前
|
C语言
C语言(指针详解)重点笔记:指针易错点,都是精华
C语言(指针详解)重点笔记:指针易错点,都是精华
3 0
|
13小时前
|
C语言
每天一道C语言编程(4):字符串的逆序输出
每天一道C语言编程(4):字符串的逆序输出
4 0
|
13小时前
|
存储 C语言
C语言指针讲解(适用于初学者)
C语言指针讲解(适用于初学者)
6 0
|
13小时前
|
算法 C语言 人工智能
|
13小时前
|
C语言
C语言中 字符串和数字的相互转换
C语言中 字符串和数字的相互转换
13 1
|
13小时前
|
存储 程序员 C语言
【C 言专栏】C 语言指针的深度解析
【4月更文挑战第30天】C 语言中的指针是程序设计的关键,它如同一把钥匙,提供直接内存操作的途径。指针是存储其他变量地址的变量,通过声明如`int *ptr`来使用。它们在动态内存分配、函数参数传递及数组操作中发挥重要作用。然而,误用指针可能导致错误,如空指针引用和内存泄漏。理解指针的运算、与数组和函数的关系,以及在结构体中的应用,是成为熟练 C 语言程序员的必经之路。虽然挑战重重,但掌握指针将增强编程效率和灵活性。不断实践和学习,我们将驾驭指针,探索更广阔的编程世界。
|
13小时前
|
算法 搜索推荐 程序员
C语言中的函数指针和回调函数
C语言中的函数指针和回调函数
10 2
|
13小时前
|
C语言
C语言:数组和指针笔试题解析(包括一些容易混淆的指针题目)
C语言:数组和指针笔试题解析(包括一些容易混淆的指针题目)
|
13小时前
|
存储 程序员 编译器
爱上C语言:指针很难?来来来,看看这篇(基础篇)
爱上C语言:指针很难?来来来,看看这篇(基础篇)