C语言指针

1.指针用法事例
#include <stdio.h>

int main()
{
 int var=10;
 int *ptr_var;
 //指针ptr_var指向变量var
 ptr_var = &var;
 //输出变量var的值和var的地址
 printf("var的值是:%d\n", var);
 printf("var的地址是:%x\n", &var);
 //输出ptr_var的地址
 printf("ptr_var的地址为:%x\n", &ptr_var);
 //输出指向变量的指针, 输出变量var的值和存储地址
 printf("var的值是:%d\n", *ptr_var);
 printf("var的地址是:%x\n", ptr_var);

 return 0;
}


2. 通过指针间接将一个变量值赋给另一个变量
#include <stdio.h>

int main()
{
 int num1=50, num2=100;
 int *ptr1, *ptr2;

 //ptr1指针指向变量num1
 ptr1=&num1;
 printf("num1变量的值是:%d\n", *ptr1);
 printf("num1变量的地址是:%d\n", ptr1);

 ptr2=&num2;
 printf("num2变量的值是:%d\n", *ptr2);
 printf("num2变量的地址是:%d\n", ptr2);

 //将ptr1指向的变量值num1也让ptr2指向
 *ptr2=*ptr1;

 printf("重赋值后的num2的值是:%d\n", *ptr2);
 printf("重赋值后的num2的地址是:%d\n", ptr2);

 return 0;
}


3.使连个指针指向同一个变量
#include <stdio.h>

int main()
{
 int num1=100;
 int *ptr1, *ptr2;

 ptr1=&num1; //ptr1指针指向num1
 printf("num1的地址是:%x\n", ptr1);

 ptr2=ptr1;
 printf("ptr2的地址是:%x\n", ptr2);

 return 0;
}


4.比较两个指针是否相等的运算
#include <stdio.h>

int main()
{
 int value=10;
 int *ptr1, *ptr2;

 ptr1=&value; //ptr1指针指向num1
 value+=53;
 
 ptr2=&value;
 if(ptr1==ptr2)
 {
  printf("两个指针指向同一个地址.\n");
 }
 else
 {
  printf("两个指针指向不同的地址.\n");
 }

 return 0;
}


5.指向数组的指针
#include <stdio.h>

int main()
{
 int data[]={5,10,44,25,15};
 int i=0;
 int *ptr;

 ptr=data; //ptr指向数组第一个元素data[0];
 while(i<5)
 {
  printf("第%d个元素的地址是:%x, 变量值是:%d\n", i+1, ptr, *ptr);
  i++;
  ptr++;
 }
 

 return 0;
}


6.通过指针检查一串字符是否为回文字符
#include <stdio.h>

int main()
{
 char name[5]={'M','A','D','A','M'};
 char *start, *end;
 int flag=1;

 start=name;
 end=name+4;

 while(start<=end)
 {
  if(*start != *end)
  {
   flag=0;
  }
  start++;
  end--;
 }

 if(flag)
 {
  printf("该字符是回文字符\n");
 }
 else
 {
  printf("该文不是回文字符\n");
 }
 
 return 0;
}

 

7.编写一个使指针交换两个数的值。

#include<stdio.h>

void main()
{
 int num1=2,num2=5;
 int *ptr1,*ptr2;
 int temp;

 ptr1=&num1;
 ptr2=&num2;

 temp=*ptr1;
 *ptr1=*ptr2;
 *ptr2=temp;

 printf(" num1=%d/n num2=%d/n",num1,num2);
}


9. 使用指针实现冒泡排序
#include <stdio.h>
#include <stdlib.h>
#define M 20

int main()
{
 int arr[M];
 int i, j, tmp, *ptr;

 for(i=0; i<M; i++)
 {
  arr[i] = rand()%100;
 }

 printf("排序前:\n");
 for(i=0; i<M; i++)
  printf("%d\t", arr[i]);

 printf("\n排序后:\n");
 for(i=0, ptr=&arr[i]; i<M-1; i++, ptr++)
 {
  for(j=i+1; j<M; j++)
  {
   if(*ptr<*(ptr+j-i))
   {
    tmp=*ptr;
    *ptr=*(ptr+j-i);
    *(ptr+j-i)=tmp;
   }
   /*
   if(arr[i]>arr[j])
   {
    tmp = arr[i];
    arr[i] = arr[j];
    arr[j] = tmp;
   }
   */

  }
 }

 for(i=0; i<M; i++)
  printf("%d\t", arr[i]);

 return 0;
}

posted @ 2013-02-12 16:57  storys  阅读(267)  评论(0编辑  收藏  举报