码迷,mamicode.com
首页 > 编程语言 > 详细

c语言指针的简单实例

时间:2018-05-01 23:57:58      阅读:334      评论:0      收藏:0      [点我收藏+]

标签:位置   函数   编译   运算符   变量   注意   mil   操作   wap   

c语言的指针的存在使得c语言对硬件的操控,以及灵活性得到了极大的提高。

但是指针的使用存在着很多难点问题。

#include<stdlib.h>
#include<stdio.h>
//这里的函数是指针做参数的例子,要知道这个特性可以弥补c语言只能有一个返回值的特性。
void swap1(int *pa,int *pb){
    int t =*pa;
    *pa=*pb;
    *pb=t;
}
//main()函数必须要返回一个数字
int main(){
    int a =15;
    int b=10;
    int* t;
    t=&b;
    a=b;
    b=*t;
    printf("%d\n",b);
    swap1(&a,&b);
    printf("%p\t%p",a,b); 
    return 0;
}

这里我们先定义两个整型的变量a,b

然后再定义一个临时的指针变量,用来存储中间变量

然后将b的变量的内存地址赋值给t,注意这里 t  代表的是内存地址

然后把b的值给a,再用b接受t地址所存储的变量, 注意这里的*t是指t这个地址所指的那个变量。

 

指针与数组

其实数组的int a[10];

里来说a其实是这个数组的第一个元素的a[0]的指针

所以数组变量本身就是表达地址,所以

 1   int a[10];
 2   int *p=a; //无需用&取地址
 3 
 4 但是数组的单元表达的是变量,需要用&取地址  
 5   a==&a[0];
 6 
 7 []运算符可以对数组做,也可以对指针做:
 8 
 9 
10    p[0] <==>a[0];
11 这里的p[0]相当于*p
12 
13 *a可以表示a[0]
14 
15 数组变量是const的指针

const 这个修饰符的作用就是表明一个变量是指定的值不能改变了

int* const p=&i; //p是const

*q=26;//OK
q++; //ERROR
 1   int ls=58;
 2     int ls1=64;
 3     int* const q=&ls;
 4     *q =10;
 5     *q=20;
 6 //  q = &ls1;   这句是不能通过编译的,因为这个指针是不能指向其他位置的地址 
 7     //执行成功说明这里的指针变量是可以被改变的
 8     ls=36 ;
 9     printf("\n%d",*q);
10     //然后我们来看另外一种情况
11     int P1=10;
12     int P2=20;
13     int const *T=&P1;
14     T=&P2;//执行结果为30
15     //*T =15;这里是不能通过编译的,因为这个指针指向的位置存储的变量是不能赋值改变的。 
16     P2=30; 
17     printf("\n%d",*T);
18     //关键在于这里的const是在*的前面还是后面决定的 
19     return 0;
1 void mai(const int*p){
2        
3        int *ls=*p; 
4            printf("ls的地址:%p",ls);
5 } 
6 这里我们传入了一个指针,但是在函数里,是不能改变这个指针所指向的值的

 指针的运算

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 
 4 int main(){
 5     int i,j;
 6     i=10;j=12;
 7     printf("i,j:%d,%d\n",&i,&j);
 8     printf("i,j:%d,%d",*&i+1,&j);
 9     printf("\n&i-&j:%d",(&i)-(&j));//这里两个地址做差其实是地址差/类型所占的位数
10 
11     int *p;
12     p=&i;
13     *p++;//实际上是*(p++);++优先级比*高;数组遍历
14     printf("\n*p:%d",*p);
15     return 0;
16 }

指针的类型转换

void*表示不知道指向什么东西的指针

指针变量的大小是相同的但是,指针是有类型的差别

 

总之指针的作用

1、需要传入较大的数据的时候用做参数
2、传入数组后对数组做操作
3、函数返回的结果不止一个的时候可以用指针带出(c只能return一个变量,或者值)
     需要要用函数来修改不止一个变量
4、动态申请内存.......

具体的后续会更。

 

c语言指针的简单实例

标签:位置   函数   编译   运算符   变量   注意   mil   操作   wap   

原文地址:https://www.cnblogs.com/BlogOfMr-Leo/p/8977142.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!