#include<stdio.h>
#include<stdlib.h>
int main() {
#define LEN (4)
(定义函数的(字符数)长度为4}
int *p_int;
{指针变量 指向int再往前三个位置整数的地址}
int a[] = { 0, 0, 0, 0 };
{定义变量int 为一个数列a,a数列包含4个值都为0}
p_int = (int*)malloc(LEN * sizeof(int));
{指针读取int地址,int地址定义为:指针变量指向内存中长度为4乘以inta[]字节数列的积;}
for (int i = 0; i < LEN; i++) {
{ 循环 赋值变量i,当i=a数列中的任意一个0,而且小于LEN长度,那么i执行自加1;}
p_int[i] = i;
{指针指向读取数列i的地址;}
*(p_int + i) = p_int[i] + 1;
{指针指向读取顺序加1的地址;}
}
for (int i = 0; i < LEN; i++) {
{循环以上for循环;}
printf("p_int[%d] = %d\n", i, p_int[i]);
{输出int的十进制地址,换行输出i数列指向的地址;}
}
for (int i = 1; i < 5; i++) {
{当LEN为5时,i从1开始循环自加1}
printf("p_int[%d] = %d\n", -i, p_int[-i]);
{输出int的十进制地址,换行输出i数列指向的反向地址;}
}
free(p_int);
未分配地址;
return 0;
返回
}
代码2-1:动态内存分配基础
程序运行结果显示
陌生词句:
LEN的含义
LEN为函数,
功能是返回文本字符串中的字符数,语法格式为LEN(text),text为待要查找其长度的文本,此函数用 于双字节字符
int*代表的是int型的指针。声明的变量就叫指针变量。
存放地址的变量称为指针变量。指针变量是一种特殊的变量,不同于一般 的变 量,变量存放的是数据本身,而指针变量存放的是数据的地址。
![]YRY@`T{3B{T3SFAM[$YFD.png](https://cdn.nlark.com/yuque/0/2022/png/257750/1653012896963-76c5945f-07ee-42d4-b531-2d828f4b4fac.png#clientId=u0cc197a4-9a99-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=291&id=u05787923&margin=%5Bobject%20Object%5D&name=%5DYRY%40%60T%7B3B%7BT3SFAM%5B%24YFD.png&originHeight=291&originWidth=725&originalType=binary&ratio=1&rotation=0&showTitle=false&size=80291&status=done&style=none&taskId=u2f479695-00d9-4d1a-8da8-c3b38af709f&title=&width=725)
扩展资料:
对变量a的访问有两种方式:
一、直接按地址0X065FDF4H找到a的存储单元,从而对变量a进行访问;
二、按系统为p=&a分配的地址先找到P=&a,然后根据P, &a的值(即变量a地址 0X065FDF4H)找到变量a在内存中的存储单元,从而对变量a进行访问。对于前
一种访问方式称为直接访问方式,后一种访问方式称为间接访问方式。
如果一个指针变量存放的是某个对象的地址,则称这个指针变量指向该对象。在
C++程序设计中,指针变量只有确定了指向才有意义。
malloc(内存,分配内存)
sizeof(字节)
free(可以理解为未分配的)
Access Read-Only Memory
- 计算机编程语言大致可分为两种:解释型和编译型。
- C 语言属于后者,简单 来说就是程序代码中必须不包含任何编译错误的情况下才能执行。
前面 的内容中我们简单介绍过符号表是什么,通过代码 1 - 3 深入来讲解一下:
对于第 5 行,我们可以将 int const 划分为两部分,
- 首先 int 定义了类型,然后 const 对其进行约束,这个约束就是只读(read-only),
- 其次在编译阶段,由于符号表存在,那么 const 约束会持续生效,在运行期符号表已经不存在,那么就可以通过特殊的方式对其进行修改。
- 使用指针可以完成修改常量的任务。
- 需要特别注意,这样的设计并不是 C 的缺陷,而是有意为之。
```c
include
int main() { int a = 1; int const b = 2;
int *p_int = &a;
printf("a = %d\n", *p_int);
p_int = (int *)&b;
*p_int = 3;
printf("b = %d\n", b);
return 0;
}
```
代码1-3:通过指针修改常量
图4:指针修改变量示意图