IOS-Object-C学习之结构体使用

前言:定义结构体并不是定义一个变量,而是定义了种数据类型。

结构体作用:

  结构体和其他类型基础数据类型一样,例如int类型,char类型 只不过结构体可以做成你想要的数据类型。以方便日后的使用。
  在实际项目中,结构体是大量存在的。研发人员常使用结构体来封装一些属性来组成新的类型。由于C语言内部程序比较简单,研发人员通常使用结构体创造新的“属性”,其目的是简化运算。
  结构体在函数中的作用不是简便,其最主要的作用就是封装。封装的好处就是可以再次利用。让使用者不必关心这个是什么,只要根据定义使用就可以了。

摘自:百度百科

一、定义结构体

基本语法:

struct 结构体名字 {
    类型 名字;
    类型 名字;
    类型 名字;
    ...
};

结构体的定义方法三种,请继续往下看。

定义方法一:

struct programmer {
    char *name;
    int age;
    int phone;
};

初始化:

struct programmer proTest = {"Garvey", 28, "13823992034"};

定义方法二:

struct {
    int age;
    int tag;
} str1;

初始化,这个只能使用点语法,具体请往下看。

定义方法三:

typedef struct {
    char *name;
    int tag;
} structExt;

使用typedef可以创建新类型,现在可以使用structExt定义新的结构体变量了。

我们可以看到,方法一和方法二的区别。方法一声明了结构体名字,但没有声明结构体变量。方法二声明了结构体变量,但没有声明结构体名字。因此我们可以知道:“结构体名字和结构体变量必须有其一,也可以两者都存在”。

结构体名字及结构体变量都存在,例:

struct programmer {
    char *name;
    int age;
    char *phone;
} proSuccess, proFail;

二、结构体成员访问和赋值

访问和赋值都是使用点语法

访问:

proSuccess.name;
proSuccess.age;
proSuccess.phone;

赋值/修改:

proSuccess.name = "Calvin";
proSuccess.age = 27;
proSuccess.phone = "13138940202";

三、注意点

错误初始化写法,这句话在预编译时就会报错:

proSuccess = {"name", 10, "13732423452"};

写了这么多,都还没输出过任何内容,这里要说的是。使用char定义的变量,输出时要使用%s。例:

NSLog(@"%s- %d - %s", proTest.name, proTest.age, proTest.phone);

PS:使用char定义的变量,不能存储中文(因为我不知道如何输出,输出会变成码,你根本都看不懂)。

好了,写了这么多了,我要休息一下了,眼睛很累... ...

时间: 2024-10-11 01:17:39

IOS-Object-C学习之结构体使用的相关文章

黑马程序员-C学习日记-结构体

------- ios培训. android培训.java培训.期待与您交流! ---------- 一.局部变量与全局变量 1.局部变量:定义在函数内部的变量以及函数形参称为局部变量 作用域:从定义的那一行开始直到其所在的代码块结束 生命周期:从程序运行到定义那一行开始分配存储空间到程序离开该变量所在的作用域 特点:(1)相同作用域内不可以定义重名变量 (2)不同作用域可以定义重名变量,内部作用域变量可以覆盖外部作用域变量 2.全局变量:函数外部定义的变量 声明: 数据类型 变量名称 定义: 

ios开发-CGRect,CGSize等结构体与NSString字符串互相转换

ios/oc中的结构体如何 转为  一个 NSString 方法呢? 或者一个字符串如何转换为 结构体呢? 系统已经为我们提供了很多好用的方法了! 此处列举一下: 结构体转字符串 NSString *NSStringFromCGPoint(CGPoint point); NSString *NSStringFromCGVector(CGVector vector); NSString *NSStringFromCGSize(CGSize size); NSString *NSStringFrom

c语言学习笔记 - 结构体

前面在学习枚举类型enum时就觉得有些不习惯,那里习惯理解了的话,到结构体这里的理解就更方便些了,因为两者有一些相似的地方. //用结构体登记一个学生的姓名和分数,如果小于60分,显示bad #include <stdio.h> typedef struct{                 char name[20]; float points; char *appraise;  //这里用字符型指针,如果用普通字符串,外面无法赋值} students; //定义一种结构体,typeof 数

小白学开发(iOS)OC_ 经常使用结构体(2015-08-14)

// //  main.m //  经常使用结构体 // //  Created by admin on 15/8/13. //  Copyright (c) 2015年 admin. All rights reserved. // #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { //      1. 表示范围:NSRange 结构体 NSRange r

C学习之结构体

结构体(struct) 结构体是由基本数据类型构成的.并用一个标识符来命名的各种变量的组合,结构体中可以使用不同的数据类型. 1. 结构体说明和结构体变量定义 在Turbo C中, 结构体也是一种数据类型, 可以使用结构体变量, 因此,  像其它类型的变量一样, 在使用结构体变量时要先对其定义. 定义结构体变量的一般格式为: struct 结构体名 { 类型  变量名; 类型  变量名; ... } 结构体变量; 结构体名是结构体的标识符不是变量名. 类型为第二节中所讲述的五种数据类型(整型.浮

第九天学习内容 结构体

using System;using System.Collections;using System.Linq;using System.Text;using System.Threading.Tasks; namespace day09{    class Program    {        struct student        {            public int no;            public string name;            public i

[swift学习之四]结构体练习

/* 注意点: 1:struct和class里面的变量都要初始化,否则不能创建实例. 2:struct也得实例化,加() 3:struct作为参数的话,是不能修改的,需要加inout关键字,而且实参需要取地址. 这个和oc不太一样,首先oc在arc下是禁止里面有引用类型,其次oc的一个指针搞定这个,用不到inout. struct Department { NSInteger no; }; -(void)UpdateDept:(struct Department*)dept { dept->no

c#例题:输入学生的学号,姓名,分数,然后根据分数进行排序再输出最终结果。重点学习用结构体定义数组的表达方式

class Program { struct student //定义一个结构体 { public int code; public string name; public int fenshu; } static void Main(string[] args) { Console.Write("请输入人数:"); int renshu = Convert.ToInt32(Console .ReadLine ()); student[] r = new student[renshu]

iOS学习 - 19 结构体

//创建新类型typedef struct { int age; char name[20];//最大字节为 20 }Student; Student value2 = {1,*strcpy(value2.name, "证书")}; /* 把字符串拷贝到 char 里面去 strcpy(value2.name, "证书"); */ // char 转 NSString NSString *str = [NSString stringWithUTF8String:va