【翁恺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


目录
相关文章
|
3天前
|
C语言
C语言指针带代码
C语言指针带代码
13 3
|
3天前
|
存储 C语言
深入理解C语言中的指针
深入理解C语言中的指针
11 0
|
3天前
|
存储 C语言
字符串的引用方式在C语言中的探讨
字符串的引用方式在C语言中的探讨
17 5
|
3天前
|
C语言
在引用数组元素时指针的运算
在引用数组元素时指针的运算
9 0
|
5天前
|
存储 C语言
向函数传递字符串: C语言中的技术与实践
向函数传递字符串: C语言中的技术与实践
14 0
|
5天前
|
程序员 C语言
使用指针变量作为函数参数的C语言程序实例
使用指针变量作为函数参数的C语言程序实例
14 0
|
5天前
|
存储 程序员 C语言
C语言指针变量的深入解析与应用
C语言指针变量的深入解析与应用
11 0
|
5天前
|
C语言
C语言中返回指针值的函数
C语言中返回指针值的函数
14 0
|
5天前
|
存储 安全 编译器
C语言指针与数组
C语言指针与数组
10 0
|
5天前
|
C语言
C语言指针与字符串
C语言指针与字符串