09C语言指针

时间:2023-03-08 19:00:01
09C语言指针

C语言指针


地址

地址就是数据元素在内存中的位置表示;

&变量名

#include <stdio.h>
int main(){
         int aa;
         unsigned int bb = &aa;
         printf("%d\n",bb);
         ;
}
#include <stdio.h>
int main(){
    ];
    unsigned ];
    printf("%d\n",add);
    ;
} 

指针

概念

地址表示一个位置,指针指向这个地址表示的位置;指针是一个变量,它存储的是另一个变量的地址,地址运算符&与间接运算符*被放置在变量的前面时,地址运算符返回该变量的地址;被放置在指针的前面时,间接运算符返回该指针指向变量的内容。

指针变量的定义与使用

#include <stdio.h>
int main(){
    int aa;
    int *address;
    address = &aa;
    printf("%d\n",address);
    ;
}
#include <stdio.h>
int main(){
    ];
    unsigned ];
    printf("%d\n",add);
    int *aa;
    aa = &CharArr[];
    printf("%d\n",aa);
    ;
} 

void指针

空指针或无类型指针

#include <stdio.h>
int main(){
    int aa;float bb;char cc;void *address;
    address = &aa; printf("%d\n",address);
    address = &bb; printf("%d\n",address);
    address = &cc; printf("%d\n",address);
    ;
}
#include <stdio.h>
int main(){
    int aa;float bb;double cc;char dd;
    int ee;float ff;double gg;char hh;
    int *AA;float *BB;double *CC;char *DD;
    void *EE,*FF,*GG,*HH;
    AA = &aa;BB = &bb;CC = &cc;DD = &dd;
    EE = &ee;FF = &ff;GG = &gg;HH = &hh;
    printf("%d\n",AA);
    printf("%d\n",BB);
    printf("%d\n",CC);
    printf("%d\n",DD);
    printf("%d\n",EE);
    printf("%d\n",FF);
    printf("%d\n",GG);
    printf("%d\n",HH) ;
    ;
}

指针运算

取指针元素

#include <stdio.h>
int main(){
    ;
    int *AA;
    AA = &aa;
    printf("%d\n",aa);
    printf("%d\n",&aa);
    printf("%d\n",*AA);
    ;
}
#include <stdio.h>
int main(){
    ;int *address;int values;
    address = &aa; printf("%d\n",address);
    values = *address; printf("%d\n",values);
    ;
}

指针的自增自减

指针与数组

数组名也是指针即数组元素的第一个元素的地址;

指针与字符

#include <stdio.h>
int main(){
    char character = 'c';
    char *c_add;
    c_add = &character;
    printf("%c\n",character);
    printf("%d\n",&character);
    printf("%c\n",*c_add);
    ;
}

指针与字符串

#include <stdio.h>
int main(){
    //
    ] = "abcdefghij";
    char *str_add;
    str_add = CharArr;
    int i;
    ;i<;i++,str_add++){
        printf("%d %d %c\n",i,str_add,*str_add);
    }
    ;
}