c语言中指针的用法,c语言中指针怎么使用

1,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是等价的 。
2,C语言指针怎么用在c语言中.指针被用来表示内存单元的地址,如果把这个地址用一个变量来保存,则 这种变量就称为指针变量 。指针变量也分别有不同的类型,用来保存不同类型变量的地址 。严格地说.指针与指针变量是不同的,为了叙述方便 , 常常把指针变量就称为指针 。内存是计算机用于存储数据的存储器,以字节作为存储单元.为了能正确的访问内存单 元 , 必须为每一个内存单元编号,这个编号就称为该单元的地址 。如果将一个旅店比喻成内 存,则旅店的房间就是内存单元,房间号码就是该单元的地址 。指针变量定义格式: [存储类型] 数据类型 *指针变量名[=初始值] 指针变量一旦定义 , 必须采用赋值的方式将其与某个变量实体相联系 , 才能使用 。指针 变量的赋值方式: 指针变量名;&普通变量名;指针在这可能讲不清楚哦其中还有 指针的指针 ..太多了 建议自己到网站上找个教程 好好学习啊【c语言中指针的用法,c语言中指针怎么使用】
3,求C语言中指针的用法电脑程序中,不管是什么东西,他都对应有一个地址,而指针的作用是指向这个地址 。例如int a=0;a的内容是0,但是在电脑中的内存地址就是其他,假如是2000,那么指针指向的就是这个2000的值 。继续刚才的例子int *p;p=&a;这个时候p就指向了a的地址2000,如果想借助p来访问a,就需要在p前面添加上*号 , 如*p的内容就是0了 , 也是a的内容 。在c语言中,指针被广泛使用,而函数指针是最为高级的用法之一 , 也是容易疑惑的地方之一 。看下面这段代码: #includevoid f(int a, int* output)随说做了有一段时间的c了,但尽然没有搞明白函数指针的用法,见到了也没有好好研究,今天终于有时间了,在网上搜了一下,终于弄懂了.原来就是定义了一个指针变量,只不过形式有点怪罢了.其实还是当成指针用就行了!一般有两种用法:1定义函数指针int (*functionpoint)(int, int)----这只是定义了一个指向函数的指针int a(int a,int b)----------------这是与之相符的函数原型void main()-----------------------使用}2用typedef定义使用typedef int (*functionpoint)(int,int);----------定义了一种类型名为functionpoint的指针int a(int a, int b)-----------------------------函数原型void main()}函数就是这个函数的指针.
4,c语言指针用法int top 应不属于指针的范畴了 , 而是int的常用变量的定义 , 这个top要看是怎么用法,如果按照负数,0,正数来使用的话,可以判断它是用来做为这个类的一个特殊的定义标识; 如果这个变量是一个循环里面的的计数器的话(意思就是随着循环的次数增多或者减少)就可以判断这个循环成功的执行的多少次了Reader是一个类名,意思类也是一种数据类型 就像整型int一样是一个数据类型名称 Reader read[Maxr];意思是定义了一个这样类的数组变量,Marxr 估计就是一个宏定义好的一个数值 为什么可以这样定义呢 , 应为class可以包含任意的数据类型(和c里面的struct一样),也包括外部class.......这问题问的干脆不靠谱 。首先,这肯定是C++,而不是C其次,top肯定不是指针,而是一个整型变量没看见你的Reader类的定义多贴点代码吧就像我写:你他怎么?写不全就看不懂啊 。在c语言中,指针被广泛使用,而函数指针是最为高级的用法之一,也是容易疑惑的地方之一 。看下面这段代码: #includevoid f(int a, int* output)随说做了有一段时间的c了,但尽然没有搞明白函数指针的用法,见到了也没有好好研究,今天终于有时间了,在网上搜了一下,终于弄懂了.原来就是定义了一个指针变量,只不过形式有点怪罢了.其实还是当成指针用就行了!一般有两种用法:1定义函数指针int (*functionpoint)(int, int)----这只是定义了一个指向函数的指针int a(int a,int b)----------------这是与之相符的函数原型void main()-----------------------使用}2用typedef定义使用typedef int (*functionpoint)(int,int);----------定义了一种类型名为functionpoint的指针int a(int a, int b)-----------------------------函数原型void main()}函数就是这个函数的指针.5,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类型的指针来表示字符串 。程序不能运行 int main() 但是没有返回 strcmp函数的 第二个参数不对 还缺少头文件#include "string.h"void sort(char *a[],int n)int i,j;char* temp = new char[100];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;} } void main() char *a[3]; int i; for(i=0;i<3;i++) a[i] = new char[100]; 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(); }在c语言中,指针被广泛使用,而函数指针是最为高级的用法之一,也是容易疑惑的地方之一 。看下面这段代码: #includevoid f(int a, int* output){printf("a = %d\n", a);*output = a + 1;} typedef void (*func)(); int main(){func f = f;int ret = 0;f(3, &ret); printf("ret = %d\n", ret);return 0;} 上面看出 func 的类型是与f的类型不匹配的 , 这样可以通过编译吗? 答案是: 可以的 。由于在c语言中编译函数的时候,是仅仅将其函数名作为该函数的唯一标识,为其分配相应地址 。所以虽然func 与 f的类型不一致,但是对于编译器看来都是两个地址,是无所谓的 。用上面的特点,可以写出非常通用的函数指针类型,typedef int (*func)(); 这里之所有要有返回值,是用来标识该函数是否执行成功的错误代码标志 。随说做了有一段时间的c了,但尽然没有搞明白函数指针的用法,见到了也没有好好研究,今天终于有时间了,在网上搜了一下,终于弄懂了.原来就是定义了一个指针变量,只不过形式有点怪罢了.其实还是当成指针用就行了! 一般有两种用法: 1定义函数指针 int (*functionpoint)(int, int)----这只是定义了一个指向函数的指针 int a(int a,int b)----------------这是与之相符的函数原型 void main()-----------------------使用 {functionpoint = a;------------先赋值functionpoint(1,2);----------调用} 2用typedef定义使用 typedef int (*functionpoint)(int,int);----------定义了一种类型名为functionpoint的指针 int a(int a, int b)-----------------------------函数原型 void main() {functionpoint fun;---------------------------定义指针fun = a;-------------------------------------赋值fun(1,2);---------------------------------使用} 函数就是这个函数的指针.

    推荐阅读