c语言,在函数中创建的指针,在其他函数中能直接调用吗

作者&投稿:酉温 (若有异议请与网页底部的电邮联系)
c语言中的指针问题,以及子函数的调用~

第一个是在根据指针, 交换指针所指的数据
第二个虽然写的使用"指针"在实现, 实际上, 他是在奖p1 和p2两个本地的变量值进行交换, 而并不是奖两个地址所指向的内存单元进行交换
第二个函数你如果吧所有的int * 都改成int, 就能更清楚的看到他到底在干嘛了

1楼感觉对函数指针不是很了解,就不评论了. 2楼的基本还可以,但是int (*p)(),然后让它指向max函数,一个包含两个未知量的函数,这在后来的标准c里面是不支持的好像. 3楼吧,那么多*,感觉有点不大对. *是取内容,连着那么* ,我没试过,没有多少意义至少.他11级了,应该也不会怎么有错,你可以试试(我不打算加那么多*, 就不调试了).
程序里面对函数的调用,就是通过函数的入口地址,然转入函数. 这样的话,函数指针的意义就明显了.函数指针指向了函数的入口,即函数指针里是函数的入口地址. 指针不能指向函数这种说法肯定是不对的.话说回来,1楼的老兄可能看错书了,或者记错了.
类型匹配很重要,二楼的声明和使用不一致,这在老版的编译器里也是支持的.那时候ANSI标准还没有制定出来.现在而言,这种定义应该不被支持了才是.
那个声明应该如下:
int (*p)(int , int);
这样才能指向
int name(int,int)型的函数.么有实验过,但按这种写法是不错的肯定.
三楼那个********p,怎么都觉得不对.

能啊,在参数里调用指针其实只是用的只是地址,下面的程序就是调用数组a的首地址。
int reform(int *q,int n)
{....}
main()
{
int a[10],*p;
p=a;
reform(p,10);
}

1、在函数中创建的指针,具有局部性,在其他函数中不能直接调用。
2、可以通过地址传递方式(可以实现双向传递)在其他函数中使用。

不能啊,函数中定义的局部变量的出了大括号就被销毁了

呵呵,楼主说话被理解成了两种解释,关键看作用域了。其实楼上2为说的都没有错

比如
void f1()
{
int *p =.....;
f2(p);//这当然是允许的
}

再如:
void f3()
{
int *p2 =.....;
}

void f4()
{
p2 = NULL;//这显然是不允许的
}


...编写一个判断奇偶数的函数,要求在主函数中输入一个整数,输出该数是...
在判断函数中,将输入数值和2进行取余,余数为0的是偶数,否则是奇数;在主函数中通过scanf先让用户输入一个数,然后调用判断函数,判断输入数值奇偶,输出判断信息。include<stdio.h> int IsJiShu(int a){ if(a%2==1) return 1;else if(a%2==0)return 0; } int main(){ int n;while...

在C语言中怎样定义一个新的函数
函数名(实际参数表)对无参函数调用时则无实际参数表。实际参数表中的参数可以是常数,变量或其它构造类型数据及表达式。各实参之间用逗号分隔。20.4.2 函数调用的方式 在C语言中,可以用以下几种方式调用函数:1. 函数表达式:函数作为表达式中的一项出现在表达式中,以函数返回值参与表达式的运算。这种...

c语言中在什么情况下在主函数外定义函数又在什么情况下在主函数内定义...
主函数都是用来调用子函数的,所以不需要在主函数内定义函数。那么当然是你的程序比较复杂,需要用到其他子函数才能实现,或者说可以简化程序时就需要在主函数外定义函数了啊。

用C语言编写函数实现快速排序(升序),在主函数中输入数组数据,并调用该...
\/\/希望对楼主有小小的帮助。。。\/\/排序的算法是二分法,N的对数时间复杂度。。。\/\/如果有疑问,我们可以再探讨。。。include<stdlib.h> include<string.h> include<stdio.h> bool merge(int * array,int p,int q,int r){ if(!(p<<q<r)&&p>=0&&r<=sizeof(array)\/sizeof(array[0])-...

c语言中主函数中定义的变量,调用函数里还需要再定义吗?
C语言中主函数中定义的变量只能在主函数中使用,所以你还得再定义一个变量。当然,捏可以把主函数中定义的这个变量传递给被调用的函数作为参数。例如 void fun(int x){ } main(){ int num=9;fun(9);} 但是如果你要在被调用函数中使用这个变量例如 fun(){ num++;} 像这样,就是错的,编译...

C语言:编写函数,求输入的三个整数值的最大值,并在主函数中输出。
include <stdio.h> int Max(int a,int b,int c){ int max;max=a;if(max<b)max=b;if(max<c)max=c;return max;} void main(){ int a,b,c,max;printf("Input 3 numbers:\\n");scanf("%d%d%d",&a,&b,&c);max=Max(a,b,c);printf("Max= %d\\n",max);} ...

c语言中,若在函数内部定义变量时没有给变量赋予初值,如int a;,则a的...
局部变量未初始化就是一个随机值,如果声明的int为全局变量会默认初始化为0

3. 在C语言程序中,在函数内部定义的变量称为全局变量。
全局变量:在函数或者类外定义的变量,从程序开始到结束都能起到作用 局部变量:在函数或者类内部定义的变量,在包含这个变量的语句块内起作用

C语言程序设计中,要调用的函数必须在main()函数中定义
不用,一般函数都是独立的,不用在函数内部定义,在函数内部定义会使代码看起来非常乱,函数在main()函数上面,就不用申明;函数在main()下面就要先在main()的上方声明。

...使输入的一个字符串按反序存放,在主函数中输入和输出字符
include <stdio.h> include <string.h> void input(char st[]);\/\/定义输入函数 void reverse(char st[]);\/\/定义反序函数 int main(){ char s[20];input(s);\/\/调用输入函数 printf("Original string: %s\\n", s);\/\/输出原字符串 reverse(s);\/\/调用反序函数 printf("New string: %s\\...

汉阴县15880922593: C语言中,在一个函数里使用指针数组,并返回指针,在另一个函数如何访问该指针数组. -
樊转唯妙: 假如在A函数里使用指针数组B(n),你可以返回数组名B或者B(0),这两者都是该数组的地址,都可以访问该数组

汉阴县15880922593: 定义全局变量指针并在函数中赋值在其他函数中可以调用吗 -
樊转唯妙: 既然是全局变量就可以,一般全局指针变量初始值赋值为NULL,比如在定义时:int *p=NULL; 在使用时先判断是否为NULL,如果是NULL那么还不可用,否则就是函数已经赋值了.

汉阴县15880922593: c语言中,指针转换后指向其它类型在main函数中,什么意思 -
樊转唯妙: 不知道你的代码是怎么样的.意思是:你定义了一个某种类型的指针变量,但是在主函数中赋值时指向了另一种数据类型,从而导致编译时出错. 比如原来定义的是int型的指钱变量,后来又指向了常数或double等其他的类型. 还是不理解的话,把你代码贴出来看看吧.说明你要的功能,帮你修改正确.

汉阴县15880922593: C语言中的函数指针 -
樊转唯妙: 函数指针是定义一个指向函数的指针,形式为:void (*p)(void); 一般用法:int fun1(int x); int fun2(int x); char fun3(int x); int fun4(char x); int main(void) { int (*p)(int x);p=fun1; //指向fun1 p(2) //这时等价于fun1(2) p=fun2; //也可以指向fun2 . .但...

汉阴县15880922593: 在C语言中,指向函数的指针怎么调用函数? -
樊转唯妙: 如果存在函数指针p,以*p取函数指针的值,然后加上参数列表调用即可. 即 ret = (*p)(arg_list); 如,p为int (*)(int)类型的函数指针,那么 int a = (*p)(10); 这样就是一次典型的函数指针调用.

汉阴县15880922593: 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(...

汉阴县15880922593: C语言指针基本概念及其指针变量的定义是什么 -
樊转唯妙: 指针是常见间接访问方式.指针就像一个快捷方式,它指向内存的一个地址,可以通过指针就可以间接的访问到数据.对于计算机,访问内存的方式有两种,直接访问和间接访问.直接访问通过就是通过变量名称去访问.指针概念是构成C/C++的...

汉阴县15880922593: 求C语言中指针的用法 -
樊转唯妙: 电脑程序中,不管是什么东西,他都对应有一个地址,而指针的作用是指向这个地址.例如int a=0; a的内容是0,但是在电脑中的内存地址就是其他,假如是2000,那么指针指向的就是这个2000的值.继续刚才的例子int *p;p=&a;这个时候p就指向了a的地址2000,如果想借助p来访问a,就需要在p前面添加上*号,如*p的内容就是0了,也是a的内容.

汉阴县15880922593: c语言的函数指针举个例子 -
樊转唯妙: 函数指针告诉CPU下一步需要执行哪里的代码的指针, 一数组十分相像.#include <stdio.h> void function(int i, double d) //一个函数的声明 { printf("函数运行, %d, %lf\n", i, d); } void AnotherFunction(int i, double d) //另外一个函数声明 { printf...

汉阴县15880922593: C语言——指向函数的指针 -
樊转唯妙: c语言中叫做回调函数,将函数指针(如max)作为函数的参数,函数(如fun)中调用这个参数指向的函数,调用函数(fun)时看情况而给函数传入不同的函数指针 例如fun(a,b,min),那么fun函数调用执行三个参数就调用min函数 参数的定义要与传入的函数指针相匹配 例如fun(int,x,int y,(*p)(int,int)) 那么调用fun(a,b,min)时,min的参数必须是(int ,int)

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网