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

iOS笔记之_C语言数组与指针

2015-03-11 14:58 246 查看
一、数组

用来存放数据的集合。

1.数组的定义

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

如:int age[3];

2.初始化:只能在定义的时候进行初始化

int age[3]={10,9,6};

通过下标引用数组成员:

a[0] = 10;

错误写法1:

int age[];

错误写法2:

int ages[5];

ages = {10, 11, 12, 14};

3.数组作为函数参数时注意点:

> 1.形参与实参数组下标的数量一般是一样的。

> 2.数组名作为函数时,要求和相对应的实参都必须是类型相同的参数,都必须有明确的数组说明。

> 3.数组名作为函数参数时,不是进行值传递而是地址传递。

> 4.函数使用的数组就是传送过来的数组。

> 5.数组作为函数参数,可以省略元素个数。

> 6.数组的遍历:可以使用for和while循环。

4.二维数组

例如a[3][4] = {{}{}{}};

代表数组a中有3组数,每组中有4个元素。

练习:使用冒泡法对数组元素进行排序,a[10]={1,4,33,6,15,21,2,88,62,54}。
#include <stdio.h>
int  main()
{
// 定义一个数组存放10个不同数字
int a[10]={1,4,33,6,15,21,2,88,62,54};

// 定义三个变量
int i,j,temp;
printf(" 需要排序的数字为:\n");
for (i = 0; i < 10; i++)
{
printf("%d ",a[i]);
}
printf("\n---------------------\n");
//进行排序
for (i = 0; i < 10; i++)
{
for (j= 0 ;j < 10-i ;j++)
if (a[j] < a[j+1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;

}
}
//输出排序结果
printf("排序后的结果为:\n");
for(i = 0;i < 10; i++)
{
printf("%d ",a[i]);
}
printf("\n");
return 0;
}
输出结果为:

 


二、字符串

1.什么是字符串?

很多字符组合子在一起就成了字符串

2.字符串的初始化

char a[] = "hello"

字符串末尾默认有\0

字符串的输出用%s ,但是\0不会输出

3.\0的作用

> 1.字符串结束的标记

> 2.printf("%s", name2); 

 会从name2这个地址开始输出字符,直到遇到\0为止

4.strlen函数:计算字符串长度

> 1.计算的是字符数,并不是字数,一个汉字算作3个字符。

> 2.计算的字符不包括\0。

> 3.从某个地址开始数字符的个数,直到遇到\0为止。

三、指针

1.什么是指针

指针也是一种数据类型。

变量类型  变量名;

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

定义了一个指针变量p。

指针变量只能存储地址。

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

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

任何指针都是8个字节。

2.实例
#include <stdio.h>
int main()
{
int a = 10;
//定义指针p并把a的内存地址传给p
int *p = &a;

//清空指针
p = 0;
//p = null;

return 0;
}


练习:通过指针比较两个数中的较小者。

#include<stdio.h>
int main()
{
int a,b,min;
int *p_a,*p_,p_min;
p_a = &a;
p_b = &b;
p_min = &min;
scanf("%d %d",p_a,p_b);
比较两值大小,将较小的赋值给*p_min
*p_min = *p_a;
if(*p_min>*p_b)
*p_min = *p_b;
//直接访问方式输出变量min
printf("min=%d\n",min);
//间接访问输出Min
printf("min=%d\n",p_min);

retern 0;
}
3.指针与数组 

 > 1.数组元素的访问方式

 int ages[5];

 int *p;

 p = ages;

 1> 数组名[下标]  ages[i]

 2> 指针变量名[下标] p[i]

 3> *(p + i)

> 2.指针变量+1,地址值究竟加多少,取决于指针的类型

  int *   4

  char *  1

  double * 8

4.指针与字符串

定义字符串的2种方式

 1> 利用数组

 char name[] = "itcast";

  * 特点:字符串里面的字符是可以修改的

  * 使用场合:字符串的内容需要经常修改

 

 2> 利用指针

  char *name = "itcast";

  * 特点:字符串其实是一个常量字符串,里面的字符是不能修改

  * 使用场合:字符串的内容不需要修改,而且这个字符串经常使用

5.指向函数的指针

.定义指向函数的指针

    double (*p)(double, char *, int);

    p = haha;

    或者

    double (*p)(double, char *, int) = haha;

(*p)是固定写法,代表指针变量p将来肯定是指向函数

 3.如何间接调用函数

 1> p(10.7, "jack", 10);

 2> (*p)(10.7, "jack", 10);

练习:编写一个函数int pieAdd(int n),计算1+2+3+……+n的值并返回。比如pieAdd(3)的返回值是1+2+3=6。

程序代码:
#include<stdio.h>
int pieAdd(int m);
int main()
{
//定义一个变量n存储用户输入的数值
int n = 0;

//如果小于或等于0则重新输入
if (n <= 0)
{
printf("请输入一个正整数:\n");
scanf("%d",&n);
}
printf("结果为:%d\n",pieAdd(n));
return 0;
}
//定义函数计算累加结果
int pieAdd(int m)
{
int i = 1, sum = 0;
while (i <= m)
{
sum += i;
i++;
}
return sum;
}
输出结果:

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息