——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
/*
指针与数组 :指向一位数组元素的指针
数组元素的访问方式
1》数组名[下标]ages[i]
2》指针变量名[下标]p[i]
3> *(p + i)
指针变量的加一 取决于指针类型
*/
指针的简单运用
int main()
{
int ages[5] = {10, 2, 3, 8, 66};
int *p;
p = &ages[0];
// 数组名就是数组的地址,也是数组首元素的地址
// p = ages;
/*
p---->&ages[0]
p + 1---->&ages[1]
p + 2---->&ages[2]
p + i---->&ages[i]
*/
// printf("%d\n",*p(p + 2));
// printf("%d\n",p[2])
for (int i = 0; i<5; i++)
{
printf("ages[%d]=%d",i,*(p+i));
}
return 0;
}
/*指针与字符串
掌握
1》定义字符串的两种方式
1.利用数组
char name[] = “itcast”;
特点:字符串里的字符可以修改
使用场合:字符串的内容需要经常修改
2.利用指针
char *name = “itcast”;
特点:字符串里的字符不能修改,是常量字符
使用场合:字符串的内容不需要经常修改,而且这个字符串经常使用#include
#include <string.h>
int string_len(char *s);
int main()
{
char a[] = "itcast123123123";
int longth = string_len(a);
printf("%d\n",longth);
return 0;
}
int string_len(char *s)
{
return strlen(s);
}
指针数组与字符串的输入
int main ()
{
char *name = "jack"
// 指针数组 (字符串数组)
char *name[5] = {"jack","jim", "rose"};
// 二位字符数组
char name2[2][10] = {"jack", "rose"};
return 0;
}
指向函数的指针
1.为什么指针可以指向一个函数函数作为一段程序,在内存中也要占据部分存储空间,它也有一个起始地址,即函数的入口地址。函数有自己的地址,那就好办了,我们的指针变量就是用来存储地址的。因此,可以利用一个指针指向一个函数。其中,函数名就代表着函数的地址。
2.指向函数的指针的定义
定义的一般形式:函数的返回值类型 (*指针变量名)(形参1, 形参2, …);
3.使用注意
由于这类指针变量存储的是一个函数的入口地址,所以对它们作加减运算(比如p++)是无意义的
指向函数的指针变量主要有两个用途:
调用函数
将函数作为参数在函数间传递
4.定义指向函数的指针
double (*p)(double, char *, int) = haha;// 函数名就是函数地址
int sum(int a, int b)
{
retrn a + b;
}
int main ()
{
// 定义指针变量指向sum函数
// 左边的int:指针变量p指向的函数返回int类型的数据
// 右边的(int, int):指针变量p指向的函数有2个int类型的形参
int (*p)(int ,int);
p = sum;
int c = p(12, 32);
printf("c is %d\n", c);
return 0;
}