1、指针
1.1.动态一维数组的构造
里分组,// DyARR.cpp :动态分配数组
#include "stdio.h"
#include "malloc.h"
int main(void)
{
//静态分配数组
int a[5];
int i;
//动态分配数组
int len;
int * pArr;
printf("please enter the length of pArr:");
scanf("%d",&len);
pArr=(int *)malloc(len*4);
//对动态一维数组进行赋值
for(i=0;i<len;i++)
{
printf("arr[%d]=",i);
scanf("%d",&pArr[i]);
}
//输出动态数组
for(i=0;i<len;i++)
printf("pArr[%d]=%d,",i,pArr[i]);
//修改动态内存的大小
realloc(pArr,10);
//手动释放动态数组
free(pArr);
return 0;
}1.2.静态内存与静态内存的比较
1.静态内存由系统自动分配、释放,动态内存由程序员手动分配、手动释放
2.静态内存是在栈分配、动态内存在堆中分配,所以动态内存可以跨函数使用
pst->age代表指针所指向的结构体变量的age这个成员。
1.3.多级指针
#include <stdio.h>
int main(voiid)
{
int i=10;
int * p=&i;//int *数据类型的p指针变量存放int类型的i变量的地址;
int ** q=&p;//int **类型的指针变量q存放int *类型的p变量的地址
int *** r=&q;
printf("i=%d\n",***r);//***r就是i变量的值
return 0;
}
clued<stdio.h>
void f(int ** q)
{
//*q就是p
}
void g()
{
int i=1;
int * p=&i;
f(&p);
}
int main(void)
{
g();
retrurn 0;
}2、结构体
2.1.为什么需要结构体
与java中类的思想类似,比如一个班同学各类学籍信息,可以捆绑在一起,成为一个新的数据类型。
2.2如何定义一个结构体
//1.推荐
struct Student
{
int age;
float score;
char sex;
};
//2.不推荐
struct Student
{
int age;
float score;
char sex;
}st2;
//3.不推荐
struct
{
int age;
float score;
char sex;
}st3;2.3.结构体的赋值和初始化
//1.定义时整体赋值
struct Student st={18,66.5,'M'};
//2.先定义,后单独赋值
struct Student st2;
st2.age=19;
st2.score=90.5;
st2.sex='F';2.4.如何取出结构体变量中的每一个变量
//1. st2.age=19; //2. struct Student *pst=&st2; pst->score=85.6;

京公网安备 11010502036488号