一、结构体指针

1. 什么是结构体指针?指向结构体变量的指针

    结构体:     typedef  struct stu{

                         char name[20];

                         char sex;

                         int age;

                   }Student;

    Student stu1 = {"zhangsan",'m',23};

    Student *p = &stu1;

p就是结构体指针,存放结构体变量第一个成员的地址.

    Student stu2 ={"lisi",'m',26};

    *p = stu2;

    (*p).sex = 'f'; 修改结构体变量(通常用p->sex = 'f')

2. 结构体数组与指针的关系

      Student stus[5] = {

             {"zhangsan",'m',23},

              {"lisi",'f',24},

              {"wangwu",'m',28},

               {"zhangda",'m',17},

               {"qianer",'f',22}

       }

      Student *p1 = &stus[3];p指向stu[0]的首地址,地址长度是Student型的长度

      Student *p2 = stus;数组名代表数组的首地址,即数组首元素(stu[0])的地址.

      将zhaoda的性别改成女,p1->sex = 'f';

  3. struct student{

        char *name;

      }

      成员定义成char name[20],区别?

       char name[20] 占20个字节,实实在在存在于内存中.

       char *name 占8个字节指向常量区的名字,自己并不存在,是一个地址,是一个指针.

4. 数组作为函数参数的时候,其实传递给函数的是数组的首地址.

      声明:printMaxValueOfArray(int  a[100]);

       系统默认:printMaxValueOfArray(int *a);

       也就是说不管定义中a[200]还是a[100],系统默认的都是数组a的首地址即a.

 注意:要么定义成int a[],要么定义成int *a,两个后面都要有int  count;

        主函数:printMaxValueOfArray(a,sizeof(a)/sizeof(a[0]));

5. 指针可以当做数组用

  void printArray(int *arr,int count);

  void printArray(int *arr,int count){

            for (int i = o; i < count; i++){

                print("%d ",arr[i]);

              }

         }

    指针可以当做数组用,数组也可以当指针用

注意: 数组作为函数参数,形参仅代表数组首元素地址,需要出传入个数

 6. 字符串与指针

  字符串其实就是字符数组

file:///Users/lanou3g/Library/Containers/com.tencent.qq/Data/Library/Application%20Support/QQ/Users/787053796/QQ/Temp.db/C744E1C4-8B16-4A06-AB53-1A8E69F411D6.png

指针++ 一次移动一类型那么长的距离

C语言--- 高级指针2(结构体指针,数组作为函数参数)的更多相关文章

  1. C语言_了解下结构体指针

    在C语言中几乎可以创建指向任何类型的指针,包括用户自定义的类型.当然也可以指向结构体,先看一个小案例: #include <stdio.h> #include <string.h&g ...

  2. go语言之进阶篇结构体指针类型匿名字段

    1.结构体指针类型匿名字段 示例: package main import "fmt" type Person struct { name string //名字 sex byte ...

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

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

  4. C与指针(结构体指针,函数指针,数组指针,指针数组)定义与使用

    类型 普通指针 指针数组(非指针类型) 数组指针 结构体指针 函数指针 二重指针 定义方式 int *p; int *p[5]; int (*p)[5]; int a[3][5]; struct{.. ...

  5. C# 篇基础知识2——运算符、类型转换、流程控制、枚举、结构体和数组、函数

    1.运算符.类型转换 计算某年y某月m某日d是周几的基姆拉尔森公式公式:int week = (d + 2*m + 3*(m + 1)/5 + y + y/4 - y/100 + y/400 + 1) ...

  6. C结构体指针的初步使用

    #include <stdio.h> #include <string.h> struct Books { char title[50]; //char author[100] ...

  7. (60) 结构体指针、结构体变量嵌套、结构体指针嵌套、函数指针、数组指针、指针数组、typedef 综合运用

    #include<stdio.h> #include<iostream> #include<malloc.h> /* author : 吴永聪 program: 结 ...

  8. C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com

    原文:C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | I ...

  9. 【C语言入门教程】7.3 结构体指针的定义和引用

    C 语言中指针的操作非常灵活,它也能指向结构体变量对结构体变量进行操作.在学习结构指针之前,需要再次加深对指针的认识.声明指针变量时所使用的数据类型修饰符实际上的作用是定义指针访问内存的范围,如果指针 ...

随机推荐

  1. Word:转换PDF

    本文适用于Word 2007 + Windows 7,造冰箱的大熊猫@cnblogs 2018/8/3 一.Word文档转PDF文档 把Word文档转换为PDF,有两个免费解决方案 1.Microso ...

  2. POJ 3692 幼儿园做游戏 最大团 模板题

    Kindergarten Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 6191   Accepted: 3052 Desc ...

  3. R_Studio(学生成绩)使用主成分分析实现属性规约

    对11_1_4.csv成绩表进行主成分分析处理 setwd('D:\\data') list.files() #读取数据 dat=read.csv(file="11_1_4.csv" ...

  4. Wordpress可以用来做什么?

    WordPress本身只是一款开源的.基于PHP的博客软件,但是由于WordPress的源码开源.结构优良.插件丰富.主题繁多,以至于是 WordPress成为世界上最流行的博客程序.<Word ...

  5. C++入门经典-例2.17强制类型转换

    1:代码如下: // 2.17.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> using ...

  6. 微信小程序-获取当前位置

    在 app.json 里面增加 permission 属性配置(小游戏需在game.json中配置): "permission": { "scope.userLocati ...

  7. 第十一组 Beta版本演示

    第11组 Beta版本演示 组长博客链接 https://www.cnblogs.com/xxylac/p/12039948.html 本组成员(不知道叫什么团队) 031702635 陈郑铧(组长) ...

  8. centos6.4编译gcc6.4

    #!/bin/bash dir=$(pwd) echo $dir cd $dir #wget https://gmplib.org/download/gmp/gmp-6.1.2.tar.xz .tar ...

  9. OpenCV学习笔记(10)——图像梯度

    学习图像梯度,图像边界等 梯度简单来说就是求导. OpenCV提供了三种不同的梯度滤波器,或者说高通滤波器:Sobel,Scharr和Lapacian.Sobel,Scharr其实就是求一阶或二阶导. ...

  10. 图片存进Mat类中,然后调用图像矩阵元素

    Mat img = imread();//灰度图 imwrite("origin.png",img); if(img.empty()) { cout << " ...