数据结构——复习C语言

betball贝博app 数据结构, 软件 458 次浏览 没有评论

指针复习
int * p; //int *表示p只能存储int数据的地址
内存是唯一一个可以被cpu访问的大容量存储设备
cpu 和 内存之间 有地址线,控制线,数据线
地址线:确定对那一个单元进行操作(32位——0~2^32-1个单元,即4G-1个字节,2^32=4294967296=4(G)*1024(MB)*1024(KB)*1024(B))
控制线:确定对此单元进行的操作(读/写)
通过函数修改主调函数中的值
1.实参必须为相关变量的地址2.形参必须为该变量类型为类型的指针变量3.被调函数汇中必须以*变量名的格式改写
一位数组名是一个指针常量,存放的是第一个元素的地址,值不能被改变。
a[i]<=>*(a+i)
数组中a+x 最后地址应该加了x*size of (a)

一个字节在内存中是一个地址
指针变量统一只占4个字节 即2^(8*4)=2^32 即32根控制线均可表示
#include <stdio.h>

void f(int **q)//此处必须为**q,int**才是int*的地址
{
*q = 0xFFFFFFFF;
}
void main()
{
int * p;
int i;
p = &i;
printf("%p\n", p);
f(&p);
printf("%p\n", p);
}

结构体复习

模型
struct student
{
int sid;
char name[200];
int age;
};//注意此处有分号

//使用方法
void main()
{
struct student st = {100,"zhangsan",20};//第一种赋值方式
printf ("%d %s %d\n",st.sid,st.name,st.name);
st.sid = 101;//第二种赋值方式,第一种使用方式
//st.name = "lisi" //错误!!C语言不能直接给字符串赋值
strcpy(st.name,"lisi");
st.age = 22;
printf ("%d %s %d\n",st.sid,st.name,st.name);
//第三种赋值方式,第二种使用方式
struct student * pst;
pst = &st;
pst->sid <==> (*pst).sid <==>st.sid
}

发表评论

邮箱地址不会被公开。

Go