您的位置:首页 > 编程语言 > C语言/C++

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

2015-01-17 00:45 330 查看

-------------------------------------- android培训java培训ios培训期待与您交流!
---------------------------------
数组

   数组:数组就是用来存储一组数据的
   特点: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]);
}
}
小练习:设计一个函数: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;
}


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

字符串的初始化

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’};

<span style="font-size:14px;"><span style="font-size:14px; background-color: rgb(240, 240, 240);">#include <stdio.h></span></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>

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);

print
95ef
f("和=%d,差=%d\n",sum,minus);

return 0;
}

int sumANDminus(int n1,int n2, int *n3)
{
*n3 = n1 + n2;
return n1 - n2;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐