------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
1.指针格式
类名称标识符 *指针变量名;
2.先定义后赋值:
int a = 10;
int *p;//定义一个指针变量
p = &a;//指针变量指向变量a的存储空间。
定义的同时赋值:
int a =10;
int *p = &a;
3.指针的作用:指针就一个作用,能够根据一个地址值访问对应的存储空间。
4. 指针的注意点:int *p 只能指向“int"类型的数据;
指针变量只能存储地址;
指针变量未经初始化,不要拿来直接访问其他存储地址;
例题1:
#include
void change(int *n);//函数声明
int main()
{
int a = 90;
change(&a);
printf("%d\n", a);
return 0;
}
void change(int *n)
{
*n = 10;
}
例题2:
#include
int sumAndMinus(int a ,int b,int*minus);
int main()
{
int n1 = 10;
int n2 =6;
scanf("%d,%d"&n1,&n2);
int he;
int cha;
printf("%d,%d\n",he ,cha);
return 0;
}
int sumAndMinus(int a ,int b,int*minus)
{
*minus = a-b;
return a+b ;
}
5.指针和数组
1>数组名就是数组的地址,也是首字符的地址。
数组元素的访问:
1>数组名[下标] ages[1];
2>指针变量名 [下标] p[1];
3>*[p+i];
例子:输出数组中所有元素;
方法一:
#include
int main()
{
int ages[] = {10,20,30,40,50};
int *p = ages;//数组名就是数组第一个元素的地址
int length = sizeof(ages)/sizeof(int);//求出数组的长度
for (int i=0;i
{
printf("%d\n",ages[i]);//逐个输出数组的元素
}
return 0;
}
方法二:
#include
int main()
{
int ages[] = {10,20,30,40,50};
int *p = ages;//数组名就是数组第一个元素的地址
int length = sizeof(ages)/sizeof(int);//求出数组的长度
for (int i=0;i
{
printf("%d\n",p[i]);//逐个输出数组的元素
}
return 0;
}
方法三:
#include
int main()
{
int ages[] = {10,20,30,40,50};
int *p = ages;//数组名就是数组第一个元素的地址
int length = sizeof(ages)/sizeof(int);//求出数组的长度
for (int i=0;i
{
printf("%d\n",*(p+i));//逐个输出数组的元素
}
return 0;
}
例题:实际一个函数:int arraySum(int a[],int n),求一位数组a前n个数的和。现在利用int *p替换int a[]
);
#include
int main()
{
int fenShu[] = {10,20,30,40,50,60};
int he = arraySum(fenShu,3 ) ;
printf("%d\n",he);
return 0;
}
int arraySum( int *p ,int n )
{
int sum=0;
for(int i = 0;i
{
p[i];
sum = sum +p[i];
}return sum;
}
6.指针和字符串:
定义字符串的两种方式:
1>char name[] = "itcast";
特点:字符串里面的字符能修改
使用场合:字符需修改的字符串中
2>char *name = "itcast";
特点:字符串里面是常量,不能修改
使用场合:字符经常用到,不许修改。
7.指针数组:
字符串数组的两种方式
1.>char *name[5] = {"rose","jack","jim"};
2>char name2[3][5]={"rose","jack","jim"};
8.返回指针的函数
#include
char *test();
int main()
{
char *name = test();
printf("%s\n",name);
return 0 ;
}
char *test()
{
return "rose";
}
9.指向函数的指针:
int (*p)(int int ):表示返回值类型是”int"型,且指针p指向的函数有两个“int"的参数。
例子:三种调用函数的方法
#include
void test();
int main()
{
void (*p)();
p = test;
//test();//直接调用
//p();//间接调用
(*p)();//间接调用函数
return 0;
}
void test()
{
printf("调用了test函数\n");
}