您的位置:

轻松搞定c语言指针的方法,C语言指针怎么用

本文目录一览:

C语言 指针方法?

#includestdio.h

int main()

{

int a,b,c,s[3],t;

int *x,*y,*z;//定义指针变量

x=a;//将a的地址赋给指针x,下同

y=b;

z=c;

scanf("%d%d%d",x,y,z);

s[0]=*x;//将指针x所指向的变量值赋给数组s的第一个元素;依次类推

s[1]=*y;

s[2]=*z;

for(int i=0;i3;i++)//冒泡排序

for(int j=0;j3-i-1;j++)

if(s[j]s[j+1])

{

t=s[j];

s[j]=s[j+1];

s[j+1]=t;

}

for(int i=0;i3;i++)

printf("%d ",s[i]);

return 0;

}

——————————————————————————

#includestdio.h

void input(int *a)

{

int *p=a;//将数组a的首地址赋给指针p

for(int i=0;i10;i++)

scanf("%d",p[i]);//指针下标法输入

}

int max_min(int *a)

{

int *p=a;//将数组a的首地址赋给指针p

int max,min,x=0,y=0,t;

max=min=p[0];

for(int i=0;i10;i++)

{

if(p[i]=max)

{

max=p[i];

x=i;

}

if(p[i]=min)

{

min=p[i];

y=i;

}

}

t=p[y];

p[y]=p[0];

p[0]=t;

t=p[9];

p[9]=p[x];

p[x]=t;

}

void output(int *a)

{

int *p=a;//将数组a的首地址赋给指针p

for(int i=0;i10;i++)

printf("%d ",p[i]);//指针下标法输出

}

int main()

{

int a[11];

input(a);//调用函数,下同

max_min(a);

output(a);

return 0;

}

C语言指针怎么用?

在c语言中.指针被用来表示内存单元的地址,如果把这个地址用一个变量来保存,则

这种变量就称为指针变量。指针变量也分别有不同的类型,用来保存不同类型变量的地址。

严格地说.指针与指针变量是不同的,为了叙述方便,常常把指针变量就称为指针。

内存是计算机用于存储数据的存储器,以字节作为存储单元.为了能正确的访问内存单

元,必须为每一个内存单元编号,这个编号就称为该单元的地址。如果将一个旅店比喻成内

存,则旅店的房间就是内存单元,房间号码就是该单元的地址。

指针变量定义格式:

[存储类型]

数据类型

*指针变量名[=初始值]

指针变量一旦定义,必须采用赋值的方式将其与某个变量实体相联系,才能使用。指针

变量的赋值方式:

指针变量名;&普通变量名;

c语言指针用法?

1、使用场景

使用指针时,必须将它指向一个变量的地址或者为它分配空间方能使用,如下所示:

#includestdio.h

#include stdlib.h

int main(int argc, char const *argv[])

{

int a[5]={0,1,2,3,4};

int *b,*d;

int c=2;

int *e=a; //e指向a数组首地址

//*b=2;   无法直接初始化

//printf("%d\n", *b);

e=e+2;  //移动两个地址单元

d=c;  //d指向c的地址来表示值

c=4;   //修改原c变量的值,d指针的值会发生改变

b=(int *)malloc(sizeof(int));//为b分配一个int型空间来直接存储值

*b=2;//分配空间后可以直接赋值了

printf("this is e,b,c,d :%d %d %d %d\n",*e,*b,c,*d);

2、类型说明

(1)int *a :表示一个指向int型变量的指针,指向的是变量的地址单元

(2)char *b:表示一个指向char变量的指针

*a表示的是这个指针指向地址的值,a为此指针本身的地址,这点要明确,一般用*(a+1)、*(a+2)来表示值,如:

int nums[5]={0,1,2,3,4};

int *a=nums;

printf("%d %d %p\n",*a,*(a+1),a);

扩展资料:

指针的运算

指针指向变量地址,若原变量的内容发生了变化,它本身也会发生变化,指针之间的运算一般为值运算和地址运算

(1)值运算:直接通过*运算方式,像a+*(a+1),结果为第一个元素与第二个元素相加。

int nums[5]={0,1,2,3,4};

int *a=nums;

(2)地址运算:通过a+i的方式.指针会指向a的下i个地址。

int nums[5]={0,1,2,3,4};

int *a=nums;

a=a+2;

printf("%d\n",*a);

结果输出2。

参考资料来源 :指针-百度百科

C语言指针的用法

1、指针的概念

指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。

先声明几个指针放着做例子:

例一:

(1)int*ptr;

(2)char*ptr;

(3)int**ptr;

(4)int(*ptr)[3];

(5)int*(*ptr)[4];

1、指针的类型

从语法的角度看,你只要把指针声明语句里的指针名字去掉,剩下的部分就是这个指针的类型。这是指针本身所具有的类型。让我们看看例一中各个指针的类型:

(1)int*ptr;

//指针的类型是int*

(2)char*ptr;

//指针的类型是char*

(3)int**ptr;

//指针的类型是int**

(4)int(*ptr)[3];

//指针的类型是int(*)[3]

(5)int*(*ptr)[4];

//指针的类型是int*(*)[4]

怎么样?找出指针的类型的方法是不是很简单?

2、指针所指向的类型

当你通过指针来访问指针所指向的内存区时,指针所指向的类型决定了编译器将把那片内存区里的内容当做什么来看待。

从语法上看,你只须把指针声明语句中的指针名字和名字左边的指针声明符*去掉,剩下的就是指针所指向的类型。例如:

(1)int*ptr;

//指针所指向的类型是int

(2)char*ptr;

//指针所指向的的类型是char

(3)int**ptr;

//指针所指向的的类型是int*

(4)int(*ptr)[3];

//指针所指向的的类型是int()[3]

(5)int*(*ptr)[4];

//指针所指向的的类型是int*()[4]

在指针的算术运算中,指针所指向的类型有很大的作用。指针的类型(即指针本身的类型)和指针所指向的类型是两个概念。当你对C越来越熟悉时,你会发现,把与指针搅和在一起的"类型"这个概念分成"指针的类型"和"指针所指向的类型"两个概念,是精通指针的关键点之一。

本篇文章来源于 黑基网-中国最大的网络安全站点 原文链接: