指针的使用

#include <stdio.h>
/*
 指针  
 1,什么是指针  作用
 如果在函数之间传递大于一个的数据给调用者
 指针是一个变量  只能存储地址  占8个字节 
 2,指针的类型
 int float char 
 指针只能指向同种类型的数据
 一级指针:指向一个普通变量
 二级指针:指向一个地址
 
 
 int a=20;
 int *pa=&a;
 int * *pb=&pa;   //int *是指针的类型 
 int ** *pc=&pb;   //int **是类型 
 int *** *pd=&pc;    //int ***是类型 
 3,指针的值
 4,指针指向的区域
 5,指针的运算
 6,指针和数组
 7,指针和函数 
 */ 

int test(int a,int s){
    return a+1;
}
int test2(int a,int s){
    a++;
    s++;
    return a;//只能返回一个值 
}



/*int main(){
    int b=1;
    int *d=b,*e=c;
    int c=2;
    swap(d,e);
    printf("%d",b); 
    return 0;
}*/
void swap(int *a,int *b){
    int *temp=*a;
    *a=*b;
    *b=*temp;
}
int main(){
    int a=20;
    int b=30;
    int const *pa=&a;//常量指针 不能*pa=50;
    int * const pa=&a;//指针常量 不能pa=&b; 
    int const * const pa=&a;//指向常量的常量指针 
    printf("%d",*pa);
} 

深入了解

#include <stdio.h>

int main(){
    int num[]={1,2,3,4,5,6,7,8,9};
    printf("%p\n",num);
    printf("%p\n",num+1);
    printf("%d\n",sizeof(num));//计算整个数组的内存空间
    //num++;//错误,不能对数组首地址改变,数组类似与指针常量
    int * a;
    a=num;
    *(a++)=20; 
    printf("%d\n",num[0]);
    printf("%p\n",(a++));
    printf("%p\n",a);
    int ab[5]={1,2,3,4,5};
    int *ptr=(int*)(&ab+1);//&ab+1表示取下一个数组的地址 
    printf("%d %d\n",*(ab+1),*(ptr-1));
    printf("%#x\n",num);//地址的一种格式  前面加了0x 
    printf("%p\n",num); //地址普通格式
    return 0;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容