c语言的指针基础


这里对a和b进行了了交换,如果不是传了指针进去int* a和b 那a和b的值就不会交换

#include <stdio.h>
//作为函数的参数
void jiaohuan(int *a,int *b){
int temp=0;
temp=*a;
*a=*b;
*b=temp;
};
int main(){

  //作为函数参数
  int m = 5;
  int n = 6;
  jiaohuan(&m,&n);
  printf("%d\n",m);
  printf("%d\n",n);

}

    

函数指针
int add(int a,int b){
return a+b;
}
int main(){
int (*sum1)(int a,int b)= &add;

int result=(*sum1)(5,6);

printf("%d\n",result);
//用法二
// int (*sum)(int a,int b) =add; 


// int result = (*sum)(5,6);
// printf("%d\n",result);


// int (*sum)(int a,int b) =add; 


 // int result = (*sum)(5,6);
// printf("%d\n",result);


}

 

 指向常量的常量指针 ,

int a=7;
const int *const p=&a;
printf("%d\n",*p);

 

 

  定义一个指针,指针的大小

char str2[] ="abc"
char *str="abc";
int *p =(int *)str; //强制转为int类型
int a = 5;
int *p = &a;
//输出a的值
printf("%d",a);
//输出a的地址
printf("%p",&a);
*P = 8; //a=8

//输出这个数据类型的大小
printf("%lu\n",sizeof(int));


//输出指针的大小


printf("%lu\n",sizeof(p)); 

 

 空指针

#include <stdio.h>
int main(){ int a=5; //没有定义类型的指针 void *p =&a; printf("%d\n",*((int *)p)); }

 

值针数组

#include <stdio.h>
int main(){

//定义一个值针数组

int a=5;
int b=6;
 int *arry[2];
 arry[0]=&a;
 arry[1]=&b;
 printf("%d\n",arry[0]);
 printf("%d\n",arry[1]);
}

 

指针的指针 // 用的比较多
#include <stdio.h>
int main(){
//指针的指针 
int a=5;
int *p=&a;
int **P1=&p;
printf("%d\n",**P1);
}

 

#include <stdio.h>

int main(){

//指向常量的指针
 int a=6;
 //const int *p =&a;
 int const *p=&a;
 printf("%d\n",*p);

}
 

 }

基础的,比较简单!但要灵活运用就比较难了!

要记住指针只是一个指向地址的工具,因为这个我们就可一从根本去取一个值,和改变一个值。(仅仅代表个人立场)

posted @ 2015-10-29 20:14  爱学习~天天学习  阅读(164)  评论(0编辑  收藏  举报