与时俱进的IT

C语言(五)指针

2018-07-29  本文已影响0人  社会主义顶梁鹿

一、指针的概念

二、*号的含义

三、指针指向数组

四、指针指向的指针

 一、指针的概念:pointer,指向一块地方(即内存地址)的东西。(也就是存放这些东西的空间)。

 运行时的数据是存在内存里面的,每一条数据都有一个地址。

 指针相当于内存地址;指针:是一种类型;指针变量:指向一块内存地址的变量

 二、*号的含义:

 1、定义指针变量的时候,*表示这是一个指针类型

int *a;   int * 是一个常整数指针类型

 2、当取值的时候,取这个内存地址里面的值的一个符号

& 取地址符 可以通过&取一个变量的内存地址;

%p 来打印内存地址

 int a = 10;

 //找到a的内存地址

 printf("%d\n",*p);

 //    int score = 90;

 //    int score2 = 100;

 //    int*scorep=&score;

 //    int*score2p=&score2;

 //    printf("%d\n",*scorep+*score2p);

// &a表示a的内存地址

 //p:是一个指针变量,也是一个内存地址

 //把a的内存地址赋值给p,p和&a就是同一块地方

 //变量就是一个名字,p就是这块内存地址的一个名字(代号)

 //p -> &a  p里面就是a的内存地址

 int* p = &a;

 printf("%p\n",&a);

 //*p表示取p这个内存地址里面的值

 //*现在表示是一个取值的符号

 //把p里面的值找出来

 printf("%d\n",*p);

三、指针指向数组名,是指向的数组里面的第一个元素的内存地址

 //char *指针指向一块内存地址,里面存的是一系列的字符+\0

 //char*[]:数组

 四、指针指向的指针

 int**  //指向指针的内存地址

 用**表示指向指针的的变量

 int a = 10;

 int *p = &a;//p的指针地址 指向a的地址

 int **p1 = &p;//p1的指针地址 指向p的地址

 printf("%d \n",**p1);//取出*p1指针地址里面的值

 int a ;//常整数类型的变量a 可以使用a 代替所有的常整数

 int *aaa;//内存地址类型的变量 aaa 可以使用aaa代替所有的内存地址

 //void sum(int *a,int *b){

 //    printf("%d\n",*a+*b);

 //

 //}

 //void change(int*a,int*b){

 //    *a=40;

 //    *b=10;

 //}

 int main(int argc, const char * argv[]) {

 //    int a=10;

// 找到a的地址

 //    printf("%p\n",&a);

 //    &a a的内存地址

//    p 是一个内存变量,也是一个内存地址

// 把a的内存地址赋值给p,p和&a就是一块地方

// 变量就是一个名字,p就是这块内存地址的一个名字(代号)

 //    int *p=&a;

 //    *p表示取p这个内存地址里面的值

 //    *现在表示是一个取值的符号

// 把p里面的值找出来

 //    printf("%p\n",p);

 //    int score=90; int score2=100;

 //    &score  &score2

// 通过指针变量计算总分

 //    int score=90;

 //    int score2=100;

 //    int *scorep=&score;

 //    int *scorep2=&score2;

 //    printf("%d\n",*scorep+*scorep2);

 //

 //    sum(&score,&score2);

 //    change(&score, &score2);

 //    printf("%d%d\n",score,score2);

 int list[3]={33,22,11};

 int *p=&list[0];

 p++;

 printf("%p\n",&list[1]);

 int a1=*p;

 printf("%d\n",*p);

 printf("%d\n",a1);

 printf("%p\n",&*p);

 printf("%p\n",&a1);

 int aaa=10;

 int *aplace=&aaa;

 printf("%d\n",*aplace);

 //    pplace->aplace->aaa

 int **pplace=&aplace;

 printf("%p\n",*pplace);

 printf("%d\n",**pplace);

上一篇 下一篇

猜你喜欢

热点阅读