数据结构复习之C语言指针与结构体

数据结构指针复习:
#include <stdio.h>

void main()
{
    int a[5] = {8, 2, 3, 4, 5};

    // a[3] == *(3+a)

    printf("%d\n", *(3+a)); // a[3] 4
    printf("*a其实就是a[0]: %d\n", *a); // 8

    // 地址是连续的
    printf("%p\n", a+1);
    printf("%p\n", a+2);
    printf("%p\n", a+3);
}

一维数组名是个指针常量,它存放的是一维数组第一个元素的地址,它的值不能被改变,
一维数组名指向的是数组的第一个元素的地址。(获取)修改一个数组,就是要把数组的第一个元素的地址和数组的长度传递进去就行了。

#include <stdio.h>

void Show_Array(int *p, int len)
{
    p[0] = -1;
    int i;

    for(i = 0; i < len; i++)
    {
        p[i] = p[i] + 1;
        printf("%d\n", p[i]);
    }

}

int main(void)
{
    int a[5] = {1, 2, 3, 4, 5};

    Show_Array(a, 5); // a等价于&a[0], &a[0]本身就是int *类型

    return 0;
}
通过函数修改实参的值:
#include <stdio.h>

void f(int *p)
{
    *p = 99;
}

int main(void)
{
    int i = 10;

    f(&i);
    printf("%d\n", i);

    return 0;
}

结构体使用概述:
结构体只有属性,没有方法。结构体是类的一个过渡。
为什么会出现结构体?
    为了表示一些复杂的数据,而普通的基本类型无法满足要求。
什么叫结构体?
    结构体是用户根据实际需要自己定义的复合数据类型。
#include <stdio.h>
#include <string.h>

struct Student    // 定义了一个新的数据类型
{
    int sid;
    char name[200];
    int sage;

}; // 分号不能省

int main(void)
{
    // 定义一个数据类型是struct Student的变量st
    struct Student st = {1000, "zhangsan", 20};
    printf("%d %s %d\n", st.sid, st.name, st.sage);

    st.sid = 99;
    strcpy(st.name, "lisi");
    st.sage = 22;
    printf("%d %s %d\n", st.sid, st.name, st.sage);

    return 0;
}

 

未完待续......

时间: 2024-11-03 03:46:37

数据结构复习之C语言指针与结构体的相关文章

[转]C语言指针 之 结构体指针

在C语言中几乎可以创建指向任何类型的指针,包括用户自定义的类型.创建结构体指针是极常见的.下面是一个例子: 1 typedef struct 2 { 3 char name[21]; 4 char city[21]; 5 char state[3]; 6 } Rec; 7 typedef Rec *RecPointer; 8 9 RecPointer r; 10 r=(RecPointer)malloc(sizeof(Rec)); r是一个指向结构体的指针.请注意,因为r是一个指针,所以像其他指

c语言指针及结构体复习

c语言简单的指针 int main() { int *p; int a = 90; p = &a;//将变量a的地址赋值给指针 *p = 10;//通过指针修改内存上的值 return 0; } c语言简单结构体 int main() { //1. 定义结构体 struct Person { int age; double height; char * name; }; //2.根据结构体类型,定义结构体变量 struct Person p={20,1.55,"jack"};/

黑马程序员 C语言-枚举,结构体,指针

一.枚举 ※枚举变量的定义 前面只是定义了枚举类型,接下来就可以利用定义好的枚举类型定义变量. 跟结构体一样,有3种方式定义枚举变量 1.先定义枚举类型,再定义枚举变量 enum Season {spring, summer, autumn, winter}; enum Season s; 2.定义枚举类型的同时定义枚举变量 enum Season {spring, summer, autumn, winter} s; 3.省略枚举名称,直接定义枚举变量 enum {spring, summer

浅谈c语言typedef 与结构体指针(个人小经验)

 #include<stdio.h> #include<string.h> typedef struct emp{ char sex[8]; char name[15]; int age; }*emp;//这里我们用typedef把emp这个结构体变成了*emp这种指向结构体成员的结构体指针 /*typedef struct emp{ char sex[8]; char name[15]; int age; }pi,*emp;//为了程序的可读性最好不要这样声明*/ int m

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

一.结构体指针 1. 什么是结构体指针?指向结构体变量的指针     结构体:     typedef  struct stu{                          char name[20];                          char sex;                          int age;                    }Student;     Student stu1 = {"zhangsan",'m',23};  

【阅读笔记】《C程序员 从校园到职场》第七章 指针和结构体

原文地址:让你提前认识软件开发(13):指针及结构体的使用 CSDN博客 https://blog.csdn.net/zhouzhaoxiong1227/article/details/23872995 [文章摘要] 指针在C语言中占有很重要的地位,同时也是学习C语言的难点所在.结构体属于用户自己建立的数据类型,在实际的软件开发项目中应用很广泛. 本文以实际的例子介绍了C语言中指针和结构体的使用方法,为进一步的学习和应用提供了有益的参考. [关键词] C语言 指针  结构体 文件 1.指针和结构

9.Go语言基础之结构体

Go语言中没有类的概念,也不支持"类"的继承等面向对象的概念. Go语言中通过结构体的内嵌再配合接口,比面向对象具有更高的扩展性和灵活性. 1.类型别名和自定义类型 1.1自定义类型 在Go语言中有一些基本的数据类型,如string,整型,浮点型,布尔等数据类型,Go语言中可以使用type关键字来定义自定义类型. 自定义类型是定义了一个全新的类型.我们可以基于内置的基本类型定义,也可以通过struct定义. //将MyInt定义为int类型 type MyInt int 通过Type关

Go语言基础之结构体

Go语言中没有“类”的概念,也不支持“类”的继承等面向对象的概念.Go语言中通过结构体的内嵌再配合接口比面向对象具有更高的扩展性和灵活性. 类型别名和自定义类型 自定义类型 在Go语言中有一些基本的数据类型,如string.整型.浮点型.布尔等数据类型, Go语言中可以使用type关键字来定义自定义类型. 自定义类型是定义了一个全新的类型.我们可以基于内置的基本类型定义,也可以通过struct定义.例如: //将MyInt定义为int类型 type MyInt int 通过Type关键字的定义,

指针和结构体知识学习

这一周主要学习了C语言中的最灵活的技巧 --指针.指针也是一个变量,它有自己的地址也有指向的地址,一般来说我们更关注的是指针指向的地址.指针的指向可以是整数.浮点数.字符.数组,同样的也可以是一个函数. 指针的基本操作有赋值.求值.取指针地址.将一个整数指针加给指针,增加指针的值.减小指针的值和求差值.如下程序所示: 1 /*ptr_ops.c - 指针操作*/ 2 #include <stdio.h> 3 int main() 4 { 5 int urn[5] = {100, 200, 30