------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
一、数组
1.数组就是用来存储一组数据的
2.只能存放一种数据类型的数据
3.数组的基本数据类型:int float double char
4.数组的定义格式:类型 数组名[元素个数];
5.遍历:查看数组的每一个元素
6.举例
#include <stdio.h>
int main ()
{
int ages[5] = {9,19,38,40,23};
//遍历
for(int i=0;i<5;i++)
{
printf("ages[%d]=%d\n",i,ages[i]);
}
return 0;
}
7.使用注意
正确写法:
1)int ages[5] = {10,11,12,45,67};
2)int ages[5] = {10,11};
3)int ages[5] = {[3]=10,[4]=11};
4)int ages[ ] = {10,11,12,45,67};
错误写法:
1)int ages[ ]
2)只能在定义数组的同时进行初始化
int ages[5]
ages = {14,23,45,56};
3)如果想在定义数组的同时进行初始化,数组元素个数必须是常量或者不写
int count = 5;
int ages[count] = {12,45,23};
8.数组和函数
1)数组作为已知参数,可以省略元素个数
void change (int array[])
{
array[0] = 100;
}
int main()
void change (int array[])
{
array[0] = 100;
}
int main()
9.练习
//设计一个函数,找出整形数组元素的最大值
#include <stdio.h>
int maxOfArray(int array[],int length);
{
//定义一个变量存储最大值(默认就是首元素)
int nax = array[0];
//遍历所有元素,找出最大值
for(int i=1;i<length;i++)
{
//如果当前元素大于max,就用当前元素覆盖max
if(array[i]=max)
{
max = array[i];
}
}
return max;
}
int main()
{
int ages[] = {123,244,67,78,89}
int max = maxOfArray(ages,sizeOf(ages)/sizeOf(int))
printf("%d\n",max);
return 0;
}
return 0;
}
二.指针
1.指针的格式:变量类型 *变量名;
2.指针变量只能存储地址
3.指针变量p指向了变量a:p = &a
4.指针就一个作用:能够根据地址值找到对应的存储空间
5.指针变量p前面的int:指针变量p指向int类型的数据
6.指针练习
#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;
}
7.使用注意
1)不建议的写法:int*p只能指向int类型的数据
int*p;
double d = 10.0;
p = &d;
2)指针变量只能存储地址
int*p;
p = 200;
3)指针变量未经过初始化,不要拿来间接访问其他存储空间
int*p;
printf("%d\n",*p);
4)不正确的写法:*p = &a
5)定义变量时的*仅仅是一个象征,没有其他特殊含义,int*p = &a;
8.指向指针的指针
1)int*p = &a;
2)int*pp = &p;
3)int*pppp = &pp;
三.指针与数组
1.举例
#include <stdio.h>
int main()
{
int ages[5] = {13,3,4,6,9};
int *p;
//指针变量P指向了数组的首元素
p = &ages[0];
//数组名就是数组的地址,也是数组首元素的地址
for(int i = 0;i<5;i++)
{
printf("ages[%d] = %d\n",i,*(p+i))
}
return 0;
}
2.数组元素的访问方式
1>数组名[下标] ages[1]
2>指针变量名[下标] p[i]
3>*(p+1)
3.指针变量的+1究竟加多少,取决于指针的类型
1>int* 4
2>char* 1
3>double* 8
3.利用一个指针来接收一个数组,指针变量array指向了数组的首元素
void change(int *array)
{
printf("%d\n",array[2]);
}
四.指针与字符串
1.举例
#include <stdio.h>
int main()
{
char name[] = "it"
//指针变量name2指向了字符串的首字符
char*name2 = "it";
printf("%s\n",*name2);
return 0;
}
2.掌握: 定义字符串的2中方式
1>利用数组 char name[] = "itcast";
特点:字符串里面的字符是可以修改的
使用场合:字符串的内容需要经常修改
2>利用指针 char*name = "itcast";
特点:字符串其实是一个常量字符串,里面的字符是不能修改
使用场合:字符串的内容不需要修改,而且这个字符串不需要经常使用
五.返回指针的函数
1.举例
#include <stdio.h>
void test()
{
printf("调用了test的函数\n");
}
int main()
{
//(*p)是固定写法,代表指针变量P将来肯定是指向函数
//左边的void:指针变量P指向的函数没有返回值
//右边的():指针变量P指向的函数没有[]号
void (*p)();
//指针变量p指向了test的函数
p = test;
(*p)();//利用指针变量间接调用函数
//直接调用函数
test();
return 0;
}