7指针

一、指针

1.指针就是存放地址的变量。一个指针变量占用4个字节。int* pa;//int * pa;

2.指针类型、取地址、解引用

1)指针类型

int* pa;//pa,*pa

int *pa;

int * pa;

语义:pa是一个指针,该指针指向一个int型的数据,即pa存放一个int型数据的地址。

int* pa, pb; // pa是int*,pb是int

int *pa, *pb;

2)取地址——&  &

int a=5;

int* pa = &a; // pa指向a,a是pa的目标,pa是a的指针,pa中存放着a的地址。*pa

3)解引用(取目标)——*

*pa = 100; // 将100赋值给pa的目标,即赋值给a     pa=100;

3.指针的用法//int add(int* p);

1)将指针作为函数的参数,传递变量的地址,进而在多个函数中访问相同的内存数据。

2)指针也可以作为函数的返回值,但是不要返回指向局部变量的指针。因为函数返回以后,其局部变量所占用的内存将随函数栈一起被释放,所得到的指针为野指针。

int add()

{

  int* p;

  ....

  return p;

}

4.常量、常量指针和指针常量

1)const可以修饰普通变量,该变量就会被当做常量来处理,即其值一经初始化就再不能被修改。

2)常量指针:指向常量的指针,即无法通过该指针修改其目标。

const int* p;

int const* p;

3)指针常量:指针型的常量,即无法修改其值的指针。

int* const p;

const int* const p; // 常量指针常量,p本身不能改,其目标亦不能改

 

const的用法
#include <stdio.h>
//游戏、不想被其他人修改自己写的代码,要用const
int main()
{
  const int a=1000;
  //a=200;//a属于常量,不能修改
  int b=10000,c=20;
  const int* p=&b;//常量指针
  //*p=1;//不能通过其目标去修改
  p=&c;
  printf("%d\n",*p);
  int* const p1=&b;//指针常量
  //p1=&c;//不能通过其地址去修改
  *p1=1000000;
  printf("%d\n",*p1);
  const int* const p2=&b;//常量指针常量
  //*p2=300;//不能通过其目标去修改
  //p2=&c;//不能通过其地址去修改
  return 0;
}
模拟计算机寻找某个文件
 #include <stdio.h>
int main()
{
  char st[20];//相当于新建一个文件夹
  char* ps;
  int i,j=0;//i用来循环遍历我们的文件夹,j用来统计文件出现了多少次
  printf("请输入一个字符串:\n");
  ps=st;//指向数组的首地址
  scanf("%s",ps);
  for(i=0;ps[i]!='\0';i++)//文件夹的遍历
    if(ps[i]=='7')
      printf("文件夹中出现‘7’字符%d次\n",++j);
  if(j==0)
    printf("文件夹中没有‘7’字符\n");
  printf("文件夹中共出现‘7’字符%d次\n",j);
  system("pause");//暂停 getch() 等待输入
  return 0;
}

 

posted @ 2017-09-04 20:16  gd_沐辰  阅读(150)  评论(0编辑  收藏  举报