c语言指针怎么用

1.c语言中指针怎么使用

1、指针指向变量:下面有这样一个代码块:int main() {int a=10;int b=15;test(a,b);printf("a=%d,b=%d\n",a,b);} void test(int x,int y) {int tmp;tmp=x;x=y;y=tmp;} 最后输出的结果还是a=10,b=15。

因为在函数调用时,实参和形参之间只是值传递。但我们使用指针结果就不一样了,如:int main() {int a=10;int b=15;test(&a,&b);printf("a=%d,b=%d\n",a,b);return 0;} void test(int * x,int *y) {int tmp;tmp=*x;*x=*y;*y=tmp;} 输出结果a=15,b=10。

变量a和b的值发生了交换。这是因为我们利用指针访问变量的存储单元,间接修改变量的值。

2、指针指向数组:定义一个数组并初始化,int array[5]={2,5,12,7,8},定义一个指针变量并把数组的地址赋给它,int *p=array,注意数组名就是数组的地址,而且数组的地址就是首元素的地址。因此我们的指针变量就指向了数组的首元素,*p=2。

如果把(p+1),那么指针变量就指向了数组的下一个元素5,因此我们可以利用指针来遍历数组的各个元素:int main() {int array[5]={2,5,12,7,8};int *p =array;for(int i=0;i3、指针指向字符串:我们都知道用数组存储字符串,如char name[20]="jack",上面已经简单讲述了指针指向数组,所以我们可以这样做,char *name="jack",指针变量指向字符串的首个字符并可以依次访问字符串的各个字符。4、指针指向函数:我们需要知道怎样表示一个指针指向函数,说白了就是语法要正确,下面我也取一个代码块来说明一下:int sum(int x,int y) {return x+y;} int main() {int a=5;int b=6;int (*p)(int,int);p=sum;int result=(*p)(a,b);printf("The result is %d\n",result);return 0;} 不难发现上面代码块里语句(*p)(a,b)可以用p(a,b)来代替,因为p和sum就是一样的,只是用前者可能更容易理解一点。

而我们要知道怎样定义一个指针指向函数,int (*p)(int,int)这是固定写法,前面的int是指针将来指向的函数的返回值的类型,如果没有函数返回值,那就是void,后面括号里的两个int当然就是指针将指向的函数的形参。5、指针指向结构体:我们首先首先定义一个结构类型,struct student { char *name; int ages;}; 再根据类型定义结构体变量struct student stu={"Rose",15}; 定义一个指针指向结构体类型,struct student *p;把结构体变量stu的地址赋给指针变量p,p=&stu; 我们可以有3种方式来访问结构体中的属性ages:stu.ages=15;(*p).ages=15;p->ages=15;不过第三种方式在C语言中只能用来指向结构体。

扩展资料:指针的用途非常广泛,比如如果你想通过函数改变一个变量的值,就得用指针而不能用值传递。还有在很多时候变量,特别是对象的数据量实在太大,程序员就会用指针来做形参,只需要传递一个地址就行,大大提高了效率。

简单地说指针就是指向变量和对象的地址。基本说明:1、在计算机中,所有的数据都是存放在存储器中的。

一般把存储器中的一个字节称为一个内存单元, 不同的数据类型所占用的内存单元数不等,如整型量占2个单元,字符量占1个单元等;2、为了正确地访问这些内存单元,须为每个内存单元编上号。 根据一个内存单元的编号即可准确地找到该内存单元。

既然根据内存单元的编号或地址就可以找到所需的内存单元,所以通常也把这个地址称为指针。内存单元的指针和内存单元的内容是两个不同的概念。

参考资料:搜狗百科-指针。

2.c语言中指针怎么使用

1、使用场景 使用指针时,必须将它指向一个变量的地址或者为它分配空间方能使用,如下所示: #include #include 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。

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

3.c语言指针用法

给你你个简单的例子吧 好好体会一下 这个例子比较全#includevoid swap(int *p1,int *p2);main(){ int a,b; int *pp1,*pp2;//定义指针变量 printf("please input 2 integer number:"); scanf("%d%d",&a,&b); pp1=&a; pp2=&b;//把变量内存单元地址给指针 if(a

4.C语言指针的用法

#include<stdio.h>

#include<math.h>

#include <conio.h>

void sort(char *a[],int n)

{

int i,j;

char *temp;

for(i=0;i<n;i++)

for(j=i+1;j<n;j++)

if(strcmp(a[i],a[j]<0))

{

temp=a[i];

a[i]=a[j];

a[j]=temp;

}

}

int main()

{

char *a[3];

int i;

for(i=0;i<3;i++)

a[i] = (char *)malloc(sizeof(char));

for(i=0;i<3;i++)

scanf("%s",a[i]);

sort(a,3);

for(i=0;i<3;i++)

printf("%s\n",a[i]);

getch();

}

应该改成这样

其中

char *temp;

temp=a[i];

a[i]=a[j];

a[j]=temp;

做了修改

原因如下:未修改前temp是一个字符变量,而*a[i]是指针a[i]所指向的内容,就把需要交换的字符串的首字符交换了。

你要交换的是指针或者说是地址,而不是指针里的内容。这就是问题所在。

在temp前加*就表示temp也是个指针,再把a[i]前的*去掉,就实现了交换指针地址的目的。

指针的声明要加*例如

int *a;

使用的时候如果事指针操作则不要带*例如

char *a = “hank”;

a++;此时a指向的字符串就变成了“ank”

涉及到指针指向的内容的要加*例如

char b = *a;

指向数组的指针,例如

int b[10];

int *a = b;

a就是b[0]的地址*a就是b[0]的内容

a+1就是b[1]的地址依此类推

又如char *a = "hank";

那么通过a就能得到整个字符串"hank"

*a是h

*(a+1)是a

STRCMP是c语言函数库中的函数

虽然传参传的是指针,但是具体比较的时候比较的是里面的内容。具体涉及到指向数组的指针的应用。因为c中没有String类型,所以就只能使用char类型的指针来表示字符串。

5.c语言中指针怎么使用

我是这样理解的:

在C语言中,你需要定义变量,那么你所定义的这个变量本身你要理解两层含义:

(1)变量中的值是多少?有了值我们可以直接拿变量参与运算,eg. int a=5;在计算的时候a就表示5;

(2)变量存储在内存中的什么位置?变量的存储位置,就是变量的地址,那么这个地址可以用指针来存储,eg. int a=5, *p=&a; 在这里p就是指针变量,存储了变量a的地址,这个时候你要是用a变量的值,即可以直接用a,也可以用*p,*p是通过p这个指针(也就是a的地址),间接的找到a,在程序中*p与a是等价的。

6.C语言指针怎么用

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

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

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

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

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

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

指针变量定义格式:

[存储类型] 数据类型 *指针变量名[=初始值]

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

变量的赋值方式:

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

7.C语言怎么用指针

在你的程序中 P1是怎样定义的?返回类型是什么?你这三条语句没有问题,你的目的是将P1清零,但是如果在C中P1的类型不是char *,程序就不能达到效果。

在单片机c51语言中未定义指向内存类型的通用指针占用3个字节;而指定指向data区的指针只占1个字节;指定指向xdata区的指针占2个字节。如指针p是指向data区,则应定义为: char data *p;。还可指定指针本身的存放内存类型,如:char data * xdata p;。其含义是指针p指向data区变量,而其本身存放在xdata区。

8.C语言中指针的用法

void PushBtnHandler(void *CallBackRef)这是一个void类型的函数,即返回值为空,传入的参数是void *(CallBackRef这个类型就死void *)

int *pPushBtn = (int *)CallBackRef;对于这句,定义一个int类型的指针,而CallBackRef是void *型的,所以用 (int *)类型转换转成int *型给pPushBtn

int *是定义整形指针

(int *)这里是强制类型转换

9.C语言中函数指针用法

函数在内存中有一个物理位置,而这个位置是可以赋给一个指针的。

一零点函数的地址就是该函数的入口点。因此,函数指针可被用来调用一个函数。

函数的地址是用不带任何括号或参数的函数名来得到的。(这很类似于数组地址的得到方法,即,在只有数组名而无下标是就得到数组地址。)

怎样说明一个函数指针变量呢 ?为了说明一个变量 fn_pointer 的类型是"返回值为 int 的函数指针", 你可以使用下面的说明语句:int (*fn_pointer) ();为了让编译器能正确地解释这句语句, *fn_pointer 必须用括号围起来。若漏了这对括号, 则:int *fn_pointer ();的意思完全不同了。

fn_pointer 将是一个函数名, 其返回值为 int 类型的指针。2:函数指针变量 在C语言中规定,一个函数总是占用一段连续的内存区, 而函数名就是该函数所占内存区的首地址。

我们可以把函数的这个首地址 ( 或称入口地址 ) 赋予一个指针变量, 使该指针变量指向该函数。然后通过指针变量就可以找到并调用这个函数。

我们把这种指向函数的指针变量称为 " 函数指针变量 " 。函数指针变量定义的一般形式为:类型说明符 (* 指针变量名 )();其中 " 类型说明符 " 表示被指函数的返回值的类型。

"(* 指针变量名 )" 表示 "*" 后面的变量是定义的指针变量。 最后的空括号表示指针变量所指的是一个函数。

例如: int (*pf)();表示 pf 是一个指向函数入口的指针变量,该函数的返回值 ( 函数值 ) 是整型。下面通过例子来说明用指针形式实现对函数调用的方法。

int max(int a,int b) { if(a>b)return a; else return b; } main() { int max(int a,int b);int(*pmax)();int x,y,z; pmax=max; printf("input two numbers:/n");scanf("%d%d",&x,&y);z=(*pmax)(x,y);printf("maxmum=%d",z);} 从上述程序可以看出用,函数指针变量形式调用函数的步骤如下:1>. 先定义函数指针变量,如后一程序中第 9 行 int (*pmax)(); 定义 pmax 为函数指针变量。2>. 把被调函数的入口地址 ( 函数名 ) 赋予该函数指针变量,如程序中第 11 行 pmax=max;3>. 用函数指针变量形式调用函数,如程序第 14 行 z=(*pmax)(x,y); 调用函数的一般形式为: (* 指针变量名 ) ( 实参表 ) 使用函数指针变量还应注意以下两点:a. 函数指针变量不能进行算术运算,这是与数组指针变量不同的。

数组指针变量加减一个整数可使指针移动指向后面或前面的数组元素,而函数指针的移动是毫无意义的。b. 函数调用中 "(* 指针变量名 )" 的两边的括号不可少,其中的 * 不应该理解为求值运算,在此处它只是一种表示符号。

3:指针型函数 前面我们介绍过,所谓函数类型是指函数返回值的类型。 在C语言中允许一个函数的返回值是一个指针 ( 即地址 ) ,这种返回指针值的函数称为指针型函数。

定义指针型函数的一般形式为:类型说明符 * 函数名 ( 形参表 ) { …… /* 函数体 */ } 其中函数名之前加了 "*" 号表明这是一个指针型函数,即返回值是一个指针。类型说明符表示了返回的指针值所指向的数据类型。

如:int *ap(int x,int y) { …… /* 函数体 */ } 表示 ap 是一个返回指针值的指针型函数, 它返回的指针指向一个整型变量。下例中定义了一个指针型函数 day_name ,它的返回值指向一个字符串。

该函数中定义了一个静态指针数组 name 。 name 数组初始化赋值为八个字符串,分别表示各个星期名及出错提示。

形参 n 表示与星期名所对应的整数。在主函数中, 把输入的整数 i 作为实参, 在 printf 语句中调用 day_name 函数并把 i 值传送给形参 n 。

day_name 函数中的 return 语句包含一个条件表达式, n 值若大于 7 或小于 1 则把 name[0] 指针返回主函数输出出错提示字符串 "Illegal day" 。否则返回主函数输出对应的星期名。

主函数中的第 7 行是个条件语句,其语义是,如输入为负数 (i<0) 则中止程序运行退出程序。 exit 是一个库函数, exit(1) 表示发生错误后退出程序, exit(0) 表示正常退出。

应该特别注意的是函数指针变量和指针型函数这两者在写法和意义上的区别。如 int(*p)() 和 int *p() 是两个完全不同的量。

int(*p)() 是一个变量说明,说明 p 是一个指向函数入口的指针变量,该函数的返回值是整型量, (*p) 的两边的括号不能少。int *p() 则不是变量说明而是函数说明,说明 p 是一个指针型函数,其返回值是一个指向整型量的指针,*p 两边没有括号。

作为函数说明, 在括号内最好写入形式参数,这样便于与变量说明区别。 对于指针型函数定义,int *p() 只是函数头部分,一般还应该有函数体部分。

main() { int i; char *day_name(int n);printf("input Day No:/n");scanf("%d",&i);if(i<0) exit(1);printf("Day No:%2d-->%s/n",i,day_name(i));} char *day_n ame(int n) { static char *name[]={ "Illegal day","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"}; return((n<1||n>7) ? name[0] : name[n]);} 本程序是通过指针函数,输入一个 1 ~ 7 之间的整数, 输出对应的星期名。指针数组的说明与使用一个数组的元素值为指针则是指针数组。

指针数组是一组有序的指针的集合。指针数组的所有元素都必须是具。

c语言指针怎么用

转载请注明出处育才学习网 » c语言指针怎么用

知识

ocr文字识别软件怎么用

阅读(246)

本文主要为您介绍ocr文字识别软件怎么用,内容包括ocr文字识别软件怎么使用的方法,ocr文字识别软件怎么用,ocr文字识别软件怎样使用。捷速图片文字识别软件,有了它我们就能把图片上的文字识别出来,转换成Word,这样我们就能直接利用上面的文字了

知识

矶钓竿怎么用

阅读(196)

本文主要为您介绍矶钓竿怎么用,内容包括矶钓竿使用方法,如何使用矶竿,矶钓杆使用方法。矶竿和手竿钓的区别主要在距离、调漂、挂饵方面。先说钓组。大号筒漂一支,5克铅坠一粒,根据对象鱼配双钩或三钩(钩号自选)。先在主线上穿两粒

知识

南航的里程怎么用

阅读(257)

本文主要为您介绍南航的里程怎么用,内容包括南航可使用里程什么意思,信用卡兑换的南方航空里程如何用,怎么用南航的里程兑换东方航空的机票。就是一种奖励计划南航的飞行常客奖励计划是“南航明珠俱乐部”。明珠俱乐部会员除了在南航和天合

知识

秘密用英文怎么说

阅读(247)

本文主要为您介绍秘密用英文怎么说,内容包括“秘密”用英文怎么说,秘密英文怎么说,秘密的英文怎么读。secret[英][ˈsi:krət] [美][si:krət]n.秘密,机密; 秘诀; 奥秘; adj.秘密的,机密的; 神秘的; 隐

知识

通讯录同步助手怎么用

阅读(281)

本文主要为您介绍通讯录同步助手怎么用,内容包括微信里的通讯录同步助手怎么使用方法,怎么用同步助手同步通讯录,手机通讯录同步软件怎么用。通讯录同步助手是一个安全、免费的个人手机数据的备份管理服务软件。该软件通过本地或是无线网络

知识

match怎么用

阅读(210)

本文主要为您介绍match怎么用,内容包括MATCH函数的使用方法,excel里的match函数怎么用,EXCEL里面的MATCH函数怎样使用,请帮助举个例子。Excel中match函数的用法=match(查找值,查找区域,匹配方式),特别需要说明的是,由于match返回的是查找值在查找

知识

怎么用汽车贷款

阅读(210)

本文主要为您介绍怎么用汽车贷款,内容包括想用车子抵押贷款怎么贷,用车向银行贷款可以吗怎么贷,贷款买车有几种方式。按照汽车抵押贷款流程来办理就可以进行贷款。办理流程贷款机构收到申请人提供的资料;2、对申请人进行家访、调查以及预估

知识

卷发条怎么用

阅读(216)

本文主要为您介绍卷发条怎么用,内容包括卷发条怎么用有照片吗,卷发夹怎么用图解,卷发筒怎么用图解。要看你是哪种塑料卷发的夹,有分很多种的。首先是用下边是尖的那种梳子屡一层薄头发出来,然后夹在指甲间,然后用一张绵纸,有点像薄的化妆棉那样

知识

膏油怎么用

阅读(264)

本文主要为您介绍膏油怎么用,内容包括香膏的用法究竟是怎样的,光油使用方法,洁面霜怎么用和洗面奶有分别吗。直接涂抹用手指蹭一点香膏下来,然后涂抹在想要涂抹的地方就可以了。注意涂抹在脖子动脉等地百方香膏适用于全身肌肤,不仅会散发好闻

知识

读者用英语怎么说

阅读(195)

本文主要为您介绍读者用英语怎么说,内容包括读者用英文怎么说,读者用英文怎么说,"读者"用英语怎么说啊。The magazine READER was founded on April, 1981 with a history of ove

知识

时间到用英语怎么说

阅读(270)

本文主要为您介绍时间到用英语怎么说,内容包括“时间到了”用英语怎么说,英语中,问日期有那几种问法,各自又该怎么回答,英语中时间的表示方法。翻译:The time has come单词分析:time英 [taɪm] 美 [taɪm] n.时间;次;时代;时刻vt.为…安排时间

知识

酸菜鱼佐料怎么用

阅读(184)

本文主要为您介绍酸菜鱼佐料怎么用,内容包括酸菜鱼调料怎样用,酸菜鱼调料怎样用,如何用酸菜鱼的调料包做酸菜鱼。酸菜鱼的制作材料:主料:1,鲜鱼一条,片成片,用两大匙淀粉,一匙盐抓匀码味。2,泡酸菜约半斤,切丝。3,泡辣椒八个,切碎。4,花椒约二十

知识

硬用英语怎么写

阅读(267)

本文主要为您介绍硬用英语怎么写,内容包括&#39;硬&#39;用英语怎么说、,坚硬的英语翻译坚硬用英语怎么说,硬的英语怎么拼。坚硬: 1. hard2. solidRelative explainations:<flintiness> <indurate> <r

知识

当代的用英语怎么说

阅读(278)

本文主要为您介绍当代的用英语怎么说,内容包括当代的的英语翻译当代的用英语怎么说,当代的英语单词怎么写,当代的英语单词怎么写。modern society英文发音:[ˈmɒdn səˈsaɪəti]中文释义:当今社会例句:In modern society, e

知识

怎么用c语言编程

阅读(257)

本文主要为您介绍怎么用c语言编程,内容包括C语言编程实现从1到100的求和,如何用C语言编写自己的姓名和学号,c语言编程怎样入门。清楚算法就可以很快写出:(1)只需输入2个变量n和sum,且sum=n+sum.(2)确定n的范围为n<=100 (3)循环体为 for

知识

c语言怎么写计算器

阅读(221)

本文主要为您介绍c语言怎么写计算器,内容包括用C语言编写一个简单的计算器1,C语言怎么做计算器,c语言设计一个简单的计算器程序。#include<stdio.h>int main() {double num1 = 0; //输入1double num2 = 0;

知识

二维指针数组怎么写

阅读(203)

本文主要为您介绍二维指针数组怎么写,内容包括二维数组如何用指针表示,结构体二维数组指针怎么写,c语言中二维数组的指针如何表示。二维数组和指针 ⑴ 用指针表示二维数组元素。要用指针处理二维数组,首先要解决从存储的角度对二维数组的认

知识

语言文字英语怎么写

阅读(287)

本文主要为您介绍语言文字英语怎么写,内容包括“语言”用英文怎么写,"我喜欢你"各国语言的书写怎么写,语文用英语怎么说。language 读音:英 [læŋɡwɪdʒ] 美 [læŋɡwɪdʒ] language泛指“语言”时是不可数名词,在句中可用作定

知识

中国的语言英语怎么写

阅读(243)

本文主要为您介绍中国的语言英语怎么写,内容包括“中国的语言”的英语怎么说,中国语言用英语写是什么,中国的英语怎么写。日语 Japanese 英语 English 西班牙语 Spanish 语 Chinese 俄语Russian 法语 FrenchPor

知识

语言设置越语怎么写

阅读(350)

本文主要为您介绍语言设置越语怎么写,内容包括设置越南语怎么写,华为手机如何设置语言越南语,设置越南语怎么写。华为手机设置语言为越南语的方法如下(以华为p20pro为例):手指下滑,在华为自带的搜索栏中输入“语言”,点击“语言”设置项。

知识

c语言递归算法怎么写

阅读(215)

本文主要为您介绍c语言递归算法怎么写,内容包括c语言递归算法,C语言1加到N的递归算法怎么写,C语言递归算法是怎么执行的。利用递归算法求5!。 1.程序分析:递归公式:fn=fn_1*4!2.程序源代码:#include "stdio.h"main(){in

知识

c语言循环语句怎么写

阅读(230)

本文主要为您介绍c语言循环语句怎么写,内容包括C语言循环语句用法,C语言中的循环语句怎么写啊,C语言中循环语句循环语句怎么写怎么设定。原发布者:西伯利亚小774三种基本的循环语句:for语句、while语句和do-while语句。循环语句(一)、for循环它

[/e:loop]