黑马程序员-IOS学习笔记-C语言基础复杂数据类型

------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------


数组

   数组:数组就是用来存储一组数据的

   特点:1、只能存放一种类型的数据,比如int类型的数组,float类型的数组

      2、里面存放的数据成为元素

  定义格式:类型 数组名[元素个数]

数组的基本使用及注意:

#include <stdio.h>

int main()
{
    // int ages[5] = {19,20,35,21,28};
    // 指定给某一个赋值
    int ages[5] = {[3]=35 ,[4]=21};//如果想在定义数组的同时进行初始化,[]内只能是常量,如整数,字符‘A’。或者不写
     
    for(int i = 0;i<5 ;i++)
    {
        printf("ages[%d]是%d\n",i,ages[i]);
    }
    return 0;
}

void arrayUse()
{
    int ages[5] = {19,20,35,21,28};
    
    //遍历:按顺序查看数组的每一个元素
    for(int i = 0;i<5 ;i++)
    {
        printf("ages[%d]是%d\n",i,ages[i]);
    }
}


#include <stdio.h>

int main()
{
    // int ages[5] = {19,20,35,21,28};
    // 指定给某一个赋值
    int ages[5] = {[3]=35 ,[4]=21};//如果想在定义数组的同时进行初始化,[]内只能是常量,如整数,字符‘A’。或者不写
     
    for(int i = 0;i<5 ;i++)
    {
        printf("ages[%d]是%d\n",i,ages[i]);
    }
    return 0;
}

void arrayUse()
{
    int ages[5] = {19,20,35,21,28};
    
    //遍历:按顺序查看数组的每一个元素
    for(int i = 0;i<5 ;i++)
    {
        printf("ages[%d]是%d\n",i,ages[i]);
    }
}
小练习:设计一个函数:int arrayMax(int a[], int count),找出数组元素的最大值  

#include <stdio.h>  
  
//设计一个函数:int arrayMax(int a[], int count),找出数组元素的最大值  
int main()  
{  
    //声明函数  
    int arrayMax();  
    //定义int类型的数组arr  
    int arr[] = {1,3,7,90,2,100};  
    //定义count记录数组arr的长度  
    int count = sizeof(arr)/sizeof(int);  
    //定义max记录数组的最大元素的值  
    int max = arrayMax(arr,sizeof(arr)/sizeof(int));  
    //打印出数组元素的最大值  
    printf("数组元素的最大值为:%d\n",max);  
    return 0;  
}  
  
int arrayMax(int a[], int count)  
{  
    //定义max为默认数组的最大元素  
    int max = a[0];  
    //利用for循环对数组进行遍历  
    for (int i = 0; i < count; i ++) {  
        //判断元素值的大小  
        if (a[i] > max )  
        {  
            //将较大的值赋给max  
            max = a[i];  
        }  
    }  
    //返回数组元素的最大值  
    return max;  
}  
#include <stdio.h>  
  
//设计一个函数:int arrayMax(int a[], int count),找出数组元素的最大值  
int main()  
{  
    //声明函数  
    int arrayMax();  
    //定义int类型的数组arr  
    int arr[] = {1,3,7,90,2,100};  
    //定义count记录数组arr的长度  
    int count = sizeof(arr)/sizeof(int);  
    //定义max记录数组的最大元素的值  
    int max = arrayMax(arr,sizeof(arr)/sizeof(int));  
    //打印出数组元素的最大值  
    printf("数组元素的最大值为:%d\n",max);  
    return 0;  
}  
  
int arrayMax(int a[], int count)  
{  
    //定义max为默认数组的最大元素  
    int max = a[0];  
    //利用for循环对数组进行遍历  
    for (int i = 0; i < count; i ++) {  
        //判断元素值的大小  
        if (a[i] > max )  
        {  
            //将较大的值赋给max  
            max = a[i];  
        }  
    }  
    //返回数组元素的最大值  
    return max;  
}  


字符串
字符串定义:很多个字符组合在一起就是字符串

字符串的初始化

l   char a[] = “123”;  和 char a [] ={‘1’,’2’,’3’};的区别,可以比较大小

l   “123”其实是由’1’、’2’、’3’、’\0’组成

l   “123”的存储分布

l   字符串的输出”%s”,’\0’是不会输出的

 \0的作用

l   输出char a[] ={‘o’,’k’};

l   在char a[]前面搞个”mj”

l   输出”mj”

l   再输出a

l   char a[] = {‘i’,’t’,’\0’,’c’};


int main()
{
    //char name[] = {'i', 't', 'c', 'H', 's', 't', '\0'};
    char name[] = "itcast";
    
    name[3] = 'H';
    
    /*
    int size = sizeof(name);
    
    printf("%d\n", size);
    */
    
    printf("我在%s上课\n", name);
    
    return 0;
}

// 字符串的一个初始化
void test2()
{
    // \0的ASCII码值是0
    // 都是字符串
    char name[8] = "it";
    char name2[8] = {'i', 't', '\0'};
    char name3[8] = {'i', 't', 0};
    char name4[8] = {'i', 't'};
    
    // 不算是一个字符串(只能说是一个字符数组)
    char name5[] = {'i', 't'};
}

/*
void test()
{
    // 'a' 'b' 'A'
    // "jack" == 'j' + 'a' + 'c' + 'k' + '\0'
    
    char name[10] = "jack888\n";
    
    // 把数组传入,仅仅是个警告
    printf(name);
    
    printf(name);
    
    printf(name);
    
    printf("57843578435");
}*/</span>


<span style="font-size:14px;">int main()
{
    //char name[] = {'i', 't', 'c', 'H', 's', 't', '\0'};
    char name[] = "itcast";
    
    name[3] = 'H';
    
    /*
    int size = sizeof(name);
    
    printf("%d\n", size);
    */
    
    printf("我在%s上课\n", name);
    
    return 0;
}

// 字符串的一个初始化
void test2()
{
    // \0的ASCII码值是0
    // 都是字符串
    char name[8] = "it";
    char name2[8] = {'i', 't', '\0'};
    char name3[8] = {'i', 't', 0};
    char name4[8] = {'i', 't'};
    
    // 不算是一个字符串(只能说是一个字符数组)
    char name5[] = {'i', 't'};
}

/*
void test()
{
    // 'a' 'b' 'A'
    // "jack" == 'j' + 'a' + 'c' + 'k' + '\0'
    
    char name[10] = "jack888\n";
    
    // 把数组传入,仅仅是个警告
    printf(name);
    
    printf(name);
    
    printf(name);
    
    printf("57843578435");
}*/</span>

小练习:

编写一个函数char_contains(char str[],char c)

 如果字符串str中包含字符c则返回数值1,否则返回数值0


#include <stdio.h>
#include <string.h>

int char_contains(char str[],char c);//申明
int main()
{
    int result = char_contains("kdfss", '3');
    
    printf("%d\n",result);
    
    return 0;
}

int char_contains(char str[],char c)
{
    /*
    //1.遍历整个字符串
    for (int i = 0; i<strlen(str); i++)
    {
        //1.如果发现某个字符等于参数f,直接返回1,退出函数
        if(str[i] == c)
        {
            return 1;
        }
    }
    
    //2.说明str里面不包含f
    return 0;
    */
    int i = 0;
    
    while (i<strlen(str) )
    {
        i++;
        
        if(str[i] == c)
        {
            return 1;
        }
        
    }
    
    return 0;
}


#include <stdio.h>
#include <string.h>

int char_contains(char str[],char c);//申明
int main()
{
    int result = char_contains("kdfss", '3');
    
    printf("%d\n",result);
    
    return 0;
}

int char_contains(char str[],char c)
{
    /*
    //1.遍历整个字符串
    for (int i = 0; i<strlen(str); i++)
    {
        //1.如果发现某个字符等于参数f,直接返回1,退出函数
        if(str[i] == c)
        {
            return 1;
        }
    }
    
    //2.说明str里面不包含f
    return 0;
    */
    int i = 0;
    
    while (i<strlen(str) )
    {
        i++;
        
        if(str[i] == c)
        {
            return 1;
        }
        
    }
    
    return 0;
}

字符串数组:
#include <stdio.h>

int main()
{
    char names[3][5] = {"jack","tom","rose"};
    
    printf("%s\n",names[2]);//输出rose
    printf("%c\n",names[1][1]);//输出第二个数组的第二个元素o
    
    return 0;
}


指针

格式:变量类型 *变量名;

定义了一个指针变量p

指针变量只能存储地址

指针就一个作用:能够根据一个地址值,访问对应的存储空间

指针变量p前面的int:指针变量p只能指向int类型的数据

#include <stdio.h>

int main()
{
    
    int *p;
    
    int a = 90;
    
    // 指针变量p指向了变量a
    p = &a;
    
    *p = 10;
    
    a = 20;
    
    printf("%d\n",*p);//输出结果为20.*p表示指针变量p所指向的的变量
    return 0;
}

void change(int n)
{
    n = 10;
}
                                                                        练习:


#include <stdio.h>

void change(int *n);

int main()
{
    int a = 90;
    
    change(&a);
    
    printf("%d\n", a);
    
    return 0;
}

void change(int *n)
{
    *n = 10;
}
                                                                     指向指针的指针:

#include <stdio.h>

int main()
{
    int a = 10;
    
    int *p = &a;
    
    int **pp = &p;//指向指针的指针
    
    **pp = 20;
    
    printf("%d\n",a);
    
    return 0;
}
                                                                           练习:

/*
 用一个函数就能输出和跟差
 */
#include <stdio.h>
int sumANDminus(int n1,int n2,int *n3);

int main()
{
    int a = 10;
    
    int b = 7;
    
    int sum ;
    
    int minus;
    
    minus = sumANDminus(a ,b , &sum);
    
    printf("和=%d,差=%d\n",sum,minus);
    
    return 0;
}

int sumANDminus(int n1,int n2, int *n3)
{
    *n3 = n1 + n2;
    return n1 - n2;
}


------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值