黑马程序员——C语言基础---数组、指针

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

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





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值