黑马程序员----------指针

来源:互联网 发布:淘宝客 api sdk下载 编辑:程序博客网 时间:2024/05/01 13:14

                     ------<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:

#includevoid change(int *n);//函数声明int main(){    int a = 90;       change(&a);       printf("%d\n", a);       return 0;}void change(int *n){    *n = 10;}

例题2:

#includeint 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];

例子:输出数组中所有元素;

方法一:

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

方法二:

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

方法三:

#includeint 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[]

 );

#includeint 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.返回指针的函数

#includechar *test();int main(){  char *name = test(); printf("%s\n",name); return 0 ;}char *test(){ return "rose";}

9.指向函数的指针:

int (*p)(int int ):表示返回值类型是”int"型,且指针p指向的函数有两个“int"的参数。

例子:三种调用函数的方法

#includevoid test();int main(){ void (*p)(); p = test; //test();//直接调用    //p();//间接调用    (*p)();//间接调用函数 return 0;}void test(){ printf("调用了test函数\n");}


0 0
原创粉丝点击