数据结构指针复习:
#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语言指针与结构体的更多相关文章

  1. c语言指针与结构体

    #include <stdio.h> #include <stdlib.h> struct mydata { int num; ]; }; void main1() { /*i ...

  2. c语言指针与结构体之内存动态分配

    struct dangdangtest { ]; ]; ]; int num; int bugnum; ]; ]; double RMB; }; void main2() { //struct dan ...

  3. [todo0211]c语言指针,结构体的疑问

    #include <stdio.h> #include <mm_malloc.h> struct ListNode { int val; struct ListNode *ne ...

  4. Android For JNI(五)——C语言多级指针,结构体,联合体,枚举,自定义类型

    Android For JNI(五)--C语言多级指针,结构体,联合体,枚举,自定义类型 我们的C已经渐渐的步入正轨了,基础过去之后,就是我们的NDK和JNI实战了 一.多级指针 指针的概念我们在前面 ...

  5. 【学习笔记】【C语言】指向结构体的指针

    1.指向结构体的指针的定义 struct Student *p;  2.利用指针访问结构体的成员 1> (*p).成员名称 2> p->成员名称 3.代码 #include < ...

  6. C语言--- 高级指针2(结构体指针,数组作为函数参数)

    一.结构体指针 1. 什么是结构体指针?指向结构体变量的指针     结构体:     typedef  struct stu{                          char name[ ...

  7. 嵌入式-C语言:通过结构体指针操作结构体内容

    #include<stdio.h> #include<string.h> struct Student { char name[32]; int age; int height ...

  8. 嵌入式-C语言基础:通过结构体指针访问结构体数组

    #include<stdio.h> #include<string.h> struct Student { char name[32]; int age; int height ...

  9. C语言中的结构体

    用户自己建立自己的结构体类型 1.  定义和使用结构体变量 (1).结构体的定义 C语言允许用户自己建立由不同类型数据组成的组合型的数据结构,它称为结构体. (2).声明一个结构体类型的一般形式为: ...

随机推荐

  1. 移动端适配1px问题

    (function(document) { var dcl = document.documentElement, wh; var scale = 1/window.devicePixelRatio; ...

  2. HDU_2082 找单词 【母函数的应用】

    题目: 假设有x1个字母A, x2个字母B,..... x26个字母Z,同时假设字母A的价值为1,字母B的价值为2,..... 字母Z的价值为26.那么,对于给定的字母,可以找到多少价值<=50 ...

  3. Codeforce-1106-D. Lunar New Year and a Wander(DFS遍历+vector存图+set)

    Lunar New Year is approaching, and Bob decides to take a wander in a nearby park. The park can be re ...

  4. ACM 计算几何向量

    向量 简介注意事项基本计算 加减法 ~ 示例代码 长度 ~ 示例代码 数乘 ~ 示例代码 点积 应用 ~ 示例代码 叉积 ~ 示例代码 性质与应用 经典题目 向量旋转 操作目的 模板代码 简介 向量, ...

  5. java的Spring学习3- mybatis

    1.java的maven依赖包 <properties> <project.build.sourceEncoding>UTF-8</project.build.sourc ...

  6. webpacke

    webpacke   安装 首先要安装 Node.js, Node.js 自带了软件包管理器 npm 用npm 安装webpack $ npm install webpack -g 此时 Webpac ...

  7. Hadoop 使用基础

    [摘录自] https://www.yiibai.com/hadoop/hadoop_hdfs_operations.html#article-start 一.HDFS 使用基础 格式化配置HDFS文 ...

  8. JavaEE 数据库随机值插入测试

    package com.jery.javaee.dbtest; import java.sql.Connection; import java.sql.DriverManager; import ja ...

  9. java中的线程(3):线程池类 ThreadPoolExecutor「线程池的类型、参数、扩展等」

    官方文档: https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ThreadPoolExecutor.html 1.简介 pu ...

  10. Lucene常用类

    1.1 IndexWriter: 充当  创造/在索引过程中更新指标的   核心组成部分 1.2 Lucene目录 Directory: 索引的存储位置: 通常是文件的列表: 这些文件被称为索引文件. ...