指针笔记_2
发布日期:2021-11-20 10:17:32 浏览次数:9 分类:技术文章

本文共 1386 字,大约阅读时间需要 4 分钟。

指针变量和一维数组

1.静态分配内存: 一维数组和指针变量

1.1确定一维数组需要两个参数:数组里面存放的个数和数组的长度
**注意:*数组名存放的是数组的首地址,所以若 int a[5]; int p;则
可以写成 *p =a[0];

#include 
void f(int* pArr,int len) {
int i; for (i = 0; i < len; i++) {
//printf("%d\n", *(pArr + i));//第一种写法 printf("%d\n", pArr [i]);//第二种,因为*(pArr + i)等价于pArr [i], } }int main(){
int a[5] = {
1,2,3,4,5 }; f(a,5); return 0;}

这样的定义方法必须事先定义好数组的个数和长度且不能改变。所以出现了动态内存分配

2 动态内存分配和一维数组

2.1 知识点
1.动态内存和静态内存的比较:
静态内存是由系统自动分配,由系统自动释放的,
静态内存是在栈中分配
动态内存是由程序员手动分配,手动释放
动态内存是在堆中分配的
2. 传统数组的缺点
1. 数组的长度必须事先指定,且只能是常整数,不能是变量
// 即静态数组 例子:int a[5];正确 但是 int len=5; int a[len];错误,因为数组的长度不能是一个变量
2. 传统形式定义的数组,该数组的内存程序员无法手动释放,数组一旦定义,系统为该数组分配的存储空间就会一直存在,
除非数组所在的函数运行结束,在一个函数运行期间,系统为该函数中数组所分配的 间,系统为该函数中数组所分配的空间会一直存在,直到该函数运行完毕时,数组的空间才会释放
3.数组的长度不能在函数运行中,动态的扩充或缩小
4.A函数定义的数组,在A函数运行期间可以被其他函数使用,但A函数运行完毕之后,A函数中的数组将无法被其他函数使用
3.所需要的函数和头文件
函数:(数据类型*)malloc(长度) 例如:p = (int*)malloc(4);
头文件: #include <malloc.h>

#include 
#include
//动态内存分配时必须包含int main(){
int a[5]; int len; int* p; int i; //动态创建一维数组 printf("请输入要存放的元素个数:"); scanf_s("%d", &len);//**输入函数,()函数的格式是这样的** p = (int*)malloc(4 * len);//类似于int p[len];本行动态的构造了一个一维数组,该数组的数组名为p //p指向的是创建的第一个字节 //对一维数组进行赋值 for (i = 0; i < len; i++) {
scanf_s("%d", &p[i]);//输入函数 } //对一维数组进行输出 for (i = 0; i < len; i++) {
printf("%d\n", p[i]); } return 0;}

补充自己的弱智c问题: scanf("%d\n",&a)输入函数,

转载地址:https://blog.csdn.net/weixin_43223362/article/details/101313611 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:指针笔记_3
下一篇:指针笔记_1

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年04月18日 04时05分43秒