C语言-指针

初始换赋值
存储类型 数据类型*指针变量名 = 初始化地址
例:
    int i;
int*p=&i;    p就是i的地址
 
int I;
int*p=&i;
int*q=p;    p也可以等于q作为地址
 
//内存地址...内存中存储的编号
#include <stdio.h>

int main(int argc, const char * argv[]) {
   
//    指针的声明
    int *p1;//声明了一个指向整型空间的指针变量  *号位置不作严格要求 int* p;
    float *p2;// 声明一个指向实型空间的指针变量
    char *p3;//声明了一个指向字符型空间的指针变量
   
    int a=12;
    float b=3.14;
    char c='m';
   
//    指针的赋值
    p1 = &a;//指针平指向了整型空间a
   
    p2=&b;//指针平指向了实型型空间b
    p3=&c;//指针平指向了字符型空间c
   
   
    printf("%d\n",*p1);//  *p1 表示取指针p1指向的空间的值=12
   
   
    int array[5]={1,2,3,4,5};//数组名array表示数组的首地址(第一个元素的地址)
//    printf("%p\n",array);
//    printf("%p\n",&array[0]);
//    printf("%p\n",&array[1]);  //数组间占据字符4
//
//    int* p4;
//    p4=array;//完全成立,可以赋值
//   
//    char name[3]={'i','o','s'};//字符数组
//    char name0[4]={'i','o','s','\0'};//字符串\0
//   
   
    for (int i=0; i<5; i++)
    {
       
        *(array+i)=i+100;//指针和i进行相加运算时,表示指针向后挪,指向下一内存单元
    }
   
    for (int i=0; i<5;i++ )
    {
        printf("%d ",array[i]);
    }
 
、、、、、、、、、、、、、、、、、、、、、
 
void exChange(int a,int b)
{
    int *p1;
    p1=&a;
    *p1=b;//把a的地址p1指向b,b的值赋给a的地址代表的数,a没了
  

   
    printf("%d %d",a,b);
   ********************************
 
void exChange(int *a,int *b)
{
    int c;  //c是中间量,用来存放*a的值,再赋给*b的值
    c=*a;
    *a=*b;   //赋值的顺序不能变
    *b=c;
    //把a的地址p1指向b,b的值赋给a的地址代表的数,a没了
  

   
   
   }

int main(int argc, const char * argv[]) {
   
   
   
    int a=33,b=44;
    exChange(&a, &b);//函数的调用过程中,如果传递的参数只是普通的(非指针)变量值,只是相当于拷贝了一份数据给函数的参数,对当期函数里面的变量值,没有任何影响
    printf("%d %d",a,b);
    

posted on 2015-10-26 14:37  树下茶壶  阅读(130)  评论(0编辑  收藏  举报

导航