数据结构复习之C语言指针与结构体
数据结构指针复习:
#include <stdio.h> void main()
{
int a[] = {, , , , }; // a[3] == *(3+a) printf("%d\n", *(+a)); // a[3] 4
printf("*a其实就是a[0]: %d\n", *a); // 8 // 地址是连续的
printf("%p\n", a+);
printf("%p\n", a+);
printf("%p\n", a+);
}
一维数组名是个指针常量,它存放的是一维数组第一个元素的地址,它的值不能被改变,
一维数组名指向的是数组的第一个元素的地址。(获取)修改一个数组,就是要把数组的第一个元素的地址和数组的长度传递进去就行了。
#include <stdio.h> void Show_Array(int *p, int len)
{
p[] = -;
int i; for(i = ; i < len; i++)
{
p[i] = p[i] + ;
printf("%d\n", p[i]);
} } int main(void)
{
int a[] = {, , , , }; Show_Array(a, ); // a等价于&a[0], &a[0]本身就是int *类型 return ;
}
通过函数修改实参的值:
#include <stdio.h> void f(int *p)
{
*p = ;
} int main(void)
{
int i = ; f(&i);
printf("%d\n", i); return ;
}
结构体使用概述:
结构体只有属性,没有方法。结构体是类的一个过渡。
为什么会出现结构体?
为了表示一些复杂的数据,而普通的基本类型无法满足要求。
什么叫结构体?
结构体是用户根据实际需要自己定义的复合数据类型。
#include <stdio.h>
#include <string.h> struct Student // 定义了一个新的数据类型
{
int sid;
char name[];
int sage; }; // 分号不能省 int main(void)
{
// 定义一个数据类型是struct Student的变量st
struct Student st = {, "zhangsan", };
printf("%d %s %d\n", st.sid, st.name, st.sage); st.sid = ;
strcpy(st.name, "lisi");
st.sage = ;
printf("%d %s %d\n", st.sid, st.name, st.sage); return ;
}
#include <stdio.h> struct Student
{
int sid;
char sname[];
int sage;
}; int main(void)
{
struct Student st = {, "zhangsan", }; // st.sid // 定义一个指针变量
struct Student *pst;
pst = &st;
pst->sid = ; // 等价于(*pst).sid, st.sid return ;
}
结构体的实现,两种方式:
struct Student st = {1000, "zhangsan", 20};
struct Student *pst = &st;
1. st.sid
2. pst->sid
pst所指向的结构体变量中的sid这个成员
pst是指向结构体变量的指针,*pst就是st
int *p;
p是指针变量,*p是普通变量。
注意:
结构体变量不能加减乘除,但可以相互赋值
普通结构体变量和结构体指针变量作为函数传参的问题
数据结构复习之C语言指针与结构体的更多相关文章
- c语言指针与结构体
#include <stdio.h> #include <stdlib.h> struct mydata { int num; ]; }; void main1() { /*i ...
- c语言指针与结构体之内存动态分配
struct dangdangtest { ]; ]; ]; int num; int bugnum; ]; ]; double RMB; }; void main2() { //struct dan ...
- [todo0211]c语言指针,结构体的疑问
#include <stdio.h> #include <mm_malloc.h> struct ListNode { int val; struct ListNode *ne ...
- Android For JNI(五)——C语言多级指针,结构体,联合体,枚举,自定义类型
Android For JNI(五)--C语言多级指针,结构体,联合体,枚举,自定义类型 我们的C已经渐渐的步入正轨了,基础过去之后,就是我们的NDK和JNI实战了 一.多级指针 指针的概念我们在前面 ...
- 【学习笔记】【C语言】指向结构体的指针
1.指向结构体的指针的定义 struct Student *p; 2.利用指针访问结构体的成员 1> (*p).成员名称 2> p->成员名称 3.代码 #include < ...
- C语言--- 高级指针2(结构体指针,数组作为函数参数)
一.结构体指针 1. 什么是结构体指针?指向结构体变量的指针 结构体: typedef struct stu{ char name[ ...
- 嵌入式-C语言:通过结构体指针操作结构体内容
#include<stdio.h> #include<string.h> struct Student { char name[32]; int age; int height ...
- 嵌入式-C语言基础:通过结构体指针访问结构体数组
#include<stdio.h> #include<string.h> struct Student { char name[32]; int age; int height ...
- C语言中的结构体
用户自己建立自己的结构体类型 1. 定义和使用结构体变量 (1).结构体的定义 C语言允许用户自己建立由不同类型数据组成的组合型的数据结构,它称为结构体. (2).声明一个结构体类型的一般形式为: ...
随机推荐
- 安装opencv-python
1.安装包下载:在下面的网址下载对应版本及平台的 .whl 包,再手动安装. https://www.lfd.uci.edu/~gohlke/pythonlibs/ 2.将其拷贝到 Python 目录 ...
- 洛谷 P1486 [NOI2004]郁闷的出纳员
题目描述 OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经常调整员工的工资 ...
- Qt 学习之路 2(40):隐式数据共享
Qt 学习之路 2(40):隐式数据共享 豆子 2013年1月21日 Qt 学习之路 2 14条评论 Qt 中许多 C++ 类使用了隐式数据共享技术,来最大化资源利用率和最小化拷贝时的资源消耗.当作为 ...
- 训练DCGAN(pytorch官网版本)
将pytorch官网的python代码当下来,然后下载好celeba数据集(百度网盘),在代码旁新建celeba文件夹,将解压后的img_align_celeba文件夹放进去,就可以运行代码了. 输出 ...
- codeforces 1100F Ivan and Burgers 线性基 离线
题目传送门 题意: 给出 n 个数,q次区间查询,每次查询,让你选择任意个下标为 [ l , r ] 区间内的任意数,使这些数异或起来最大,输出最大值. 思路:离线加线性基. 线性基学习博客1 线性基 ...
- 数组的indexOf方法--数组去重
数组的indexOf方法 数组方法大家再熟悉不过了,却忽略了数组有 indexOf 这个方法(我个人感觉). 干说不练瞎扯淡,遇到了什么问题,注意⚠️点又在哪里? let arr = ['orange ...
- [转] 如何在ie11里使用a连接创建动态下载文件流
[From] https://segmentfault.com/q/1010000009470664 查了资料,可以使用微软独家的msSaveBlob, 这个方法支持ie10及以上. var down ...
- [转] NOI, NOIP, IOI, ACM
[From] http://blog.csdn.net/chenbean/article/details/38928243 NOI是教育部和中国科协委托中国计算机学会举办了全国青少年计算机程序设计竞赛 ...
- centos7安装nslookup工具、ntp工具
2018-12-13 centos7安装nslookup工具 yum install bind-utils -y DNS解析localhost到本机 # .检测 [root@node2 ~]# nsl ...
- CNN Advanced
from sys import path path.append('/home/ustcjing/models/tutorials/image/cifar10/') import cifar10,ci ...