C语言指针调用,C语言如何使用指针

1 , C语言如何使用指针inta=10;int*p=printf(%d%d\n,a,*p);return0;p就是指针变量 , 存储了变量a所在的内存地址*p和a表达的意思是1样的赋值方面不允许把1个数赋予指针变量,也就是说你给他赋值1个数值是不行的【C语言指针调用,C语言如何使用指针】
2,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是等价的 。
3,C语言 指针 函数调用貌似算法也有问题 。设a=3 b=2 c=1的话 。。输出结果会是: 2 1 3 。所以还得再对算法进行改进 。首先找到3个数中的最小值,并且与a交换数值 , 然后再比较b,c变量 。大的与c交换 。比较和交换其实都换到函数里比较方便吧 。。你的L1和L2的实现是相同的,所以只要其中一个,而且你的L1方法不能那样用 。#include<stdio.h>void L1(int *a1,int *b1);void main() int a,b,c; scanf("%d%d%d",&a,&b,&c); if(a>b)L1(&a,&b); if(b>c)L1(&b,&c); printf("排列:%d%d%d\n",a,b,c);}void L1(int *a1,int *b1) int t; t=*a1;*a1=*b1;*b1=t; }
4,C中怎样使用指针指针的类型有多种,最重要的就是,指针实质是存储变量地址的,这就是指针的实质,而一个变量的各作就是基于自身的存储地址 。void sub(int* c,int* d,int* p,int* q){ int i,j; i=(*c)*(*c); j=(*d)*(*d); *c=i*j; *d=(i-j); *p=i+j; *q=i-j;}注意 指针使用前 一定要声明能把问题数清楚点吗?指针是C语言非常重要的构成 。首先要清楚指针及其涉及的基本概念 。然后要明白何处/必须 使用、为什么用它等这些问题:是使程序高效、代码简洁、适抽象设计(函数指针)、学习数据结构的基?。苛私饬苏庑┠憔突崃榛钤擞貌⑶艺肥褂昧?。例标准库函数strlen的实现:size_t strlen(const char *s){/*find length of s[]*/const char *sc;for(sc = s; *sc;sc) ;return (sc - s);}这个不是几句话说的清的 。指针提供了一种可以对内存中的数据和代码直接访问的能力 。如何使用指针?首先要理解指针 。比如使用指针读取数据,指针里保存的是数据在内存中的地址,但只知道地址还不够 , 还要知道从这个地址读出多少数据,即数据在内存中的存储长度,比如一个整型值一般占用4个字节,所以一个整型指针包含了两方面信息:地址和4字节数据长度 。当把一个整型变量的地址赋值给整型指针时 , 同时将变量两方面的信息赋值给了指针,所以在使用此指针时才能实现对此变量的准确访问 。以上是对指针的初步理解 。有些情况下,必须使用指针 。*号变量5 , 在C语言中指向函数的指针怎么调用函数如果存在函数指针p,以*p取函数指针的值 , 然后加上参数列表调用即可 。即ret = (*p)(arg_list);如,p为int (*)(int)类型的函数指针 , 那么int a = (*p)(10);这样就是一次典型的函数指针调用 。其实,函数指针确实不是“指向函数的指针”函数指针,就是函数指针,加不加*没有实际意义 。二楼的那个:c=(*p)(a,b);也可以写成c=(****************************************************p)(a,b);或者c=p(a,b);你说它指向什么? PS,加*有特殊的用途 , 初学者就算了1楼感觉对函数指针不是很了解,就不评论了. 2楼的基本还可以,但是int (*p)(),然后让它指向max函数,一个包含两个未知量的函数,这在后来的标准c里面是不支持的好像. 3楼吧,那么多*,感觉有点不大对. *是取内容,连着那么* ,我没试过,没有多少意义至少.他11级了,应该也不会怎么有错,你可以试试(我不打算加那么多*, 就不调试了).程序里面对函数的调用,就是通过函数的入口地址,然转入函数. 这样的话,函数指针的意义就明显了.函数指针指向了函数的入口,即函数指针里是函数的入口地址. 指针不能指向函数这种说法肯定是不对的.话说回来,1楼的老兄可能看错书了,或者记错了.类型匹配很重要,二楼的声明和使用不一致,这在老版的编译器里也是支持的.那时候ANSI标准还没有制定出来.现在而言,这种定义应该不被支持了才是. 那个声明应该如下:int (*p)(int , int);这样才能指向int name(int,int)型的函数.么有实验过,但按这种写法是不错的肯定.三楼那个********p,怎么都觉得不对.两种方式,在某些环境下是等效的,但是个人建议使用m=(*p)(a)这种方式,表意明确说是等效的原因是实际上函数名也只是一个地址而已但是要注意的是,m=p(a)这样的写法【据说】某些编译器认为是错误的表达式,会导致编译错误(但是同时,如果lz看书比较仔细的话,可能会在经典书籍一书中见到说两种表示都是合理的[中文版p261],所以我之前强调了是"据说",事实上,我到今天所用过的所有c编译器都支持两种表示方式;但是我们再回到经典中的经典中使用的函数指针都是m=(*p)(a)这种方式[5.11 指向函数的指针])int max(int x,int y)main()int a=10,b=20,c;p=max;//指向max函数c=(*p)(a,b);//与c=max(a,b);等价...}指向函数的指针的说话本身有问题的,你说的是函数指针吧,如int *fun(int*a);这个函数接收一个指针,并返回一个指针,指针不能指向函数,只能指向函数的返回值,函数在内存中是存放在程序代码区的,而指针是用来访问堆中空间的

    推荐阅读