
正文
c语言指针定义与调用格式,c语言指针的用法
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
为什么利用指针时,定义函数要用*,而调用函数时要用&
定义,因为它是定义。不带“*”,就无法区分是指针还是变量。&:叫做,取地址符。p1=其实就是把a的地址取出来,赋给p1。你可以这么理解,*P1才是和变量a同一个等级的东西。&相当于降级取地址,那p1去掉星号*也相当于取地址。
定义时的*是指针类型符,num=*a;这里的*是取地址空间值的运算符,虽然都是*,但意思是不一样的。2。初始化为空是为了防止误操作。如果你觉得自己可以完全保证永远不会写出误操作的代码来,不初始化为空也没问题。但好像很难有人能做到。3。
这里谈论的是函数的形式参数问题。函数原型或函数定义头 里的 参数,就是形式参数。int *a 作为形式参数,它可以传递一个int 形变量的地址,可以用来传递一个整型量,或一个数组的首地址。int a[] 可以传递一个数组的首地址,不能用来传递一个整型量。
&a++;\\表示存放a的地址加上sizeof (int)*1,因为a是int指针 &a--;\\表示存放a的地址减去sizeof (int)*1 但由于是直接的指针操作,可能会被编译器判错 上面这些例子应该让你清楚什么时候用“*”什么时候用“&”了吧,希望对你有帮助。
相关问答
Q1: c语言指针,指向数组的指针、指向指针数组的指针、指向数组的指针的指...
(2)数组指针:它实际上是一个指针,该指针指向一个数组。int (*arr)[8];//由于[]的优先级比*高,因此在写数组指针的时候必须将*arr用括号括起来//arr先和*结合,说明p是一个指针变量//这句话的意思就是:指针arr指向一个大小为8个整型的数组。
指针数组,指数组元素就是指针 数组指针,对于一维数组来说就是数组名 故对于一维数组来说,数组名是第一个元素的指针,而元素本身也是指针,故数组名是指向指针的指针。
数组名并不是一个普通的变量,而是一个指向数组首元素的指针。也就是说,我们可以用数组名来初始化一个对应类型的指针。虽然数组名是指针,但它是一个指针常量。也就是说,不带下标的数组名不能作为左值。指针是一种数据类型,所以,我们可以用指针类型来创建一个数组。
char *pi=str; //相当于char *pi ;pi=str;char **ppi=*pi;//这个地方抄错了。应为char **ppi=定义加*表明这是指针类型的变量 用的时候,就是用的指针,加*干什么。
可以不定义字符数组,而定义一个字符指针。用字符指针指向字符串中的字符。[例12]void main(void){char *string=I Love China!;printf(%s\n,string);} 在这里没有定义字符数组,但C语言对字符串常量是按字符数组处理的,实际上在内存开辟了一个字符数组用来存放字符串数组。
Q2: C语言函数指针定义法
1、int(*p)(int, int);这个语句就定义了一个指向函数的指针变量 p。首先它是一个指针变量,所以要有一个“*”,即(*p);其次前面的 int 表示这个指针变量可以指向返回值类型为 int 型的函数;后面括号中的两个 int 表示这个指针变量可以指向有两个参数且都是 int 型的函数。
2、typedef void*(*pFn)();pFn可以这样理解:首先pFn是一个指针,指针指向一个函数(或者说pFn是一个函数指针),此函数返回一个无类型的指针。最终定义的变量及函数都是指针罢了,不过是指针的类型不同。所以在编译时会有警告,说指针类型不匹配。但对于程序来讲,都是可以在特定的上下文中使用的。
3、int (*fn_pointer) ();为了让编译器能正确地解释这句语句, *fn_pointer 必须用括号围起来。若漏了这对括号, 则:int *fn_pointer ();的意思完全不同了。fn_pointer 将是一个函数名, 其返回值为 int 类型的指针。
4、int (*f) (int x); /* 声明一个函数指针 */ f=func; /* 将func函数的首地址赋给指针f */ 或者使用下面的方法将函数地址赋给函数指针:f = 赋值时函数func不带括号,也不带参数,由于func代表函数的首地址,因此经过赋值以后,指针f就指向函数func(x)的代码的首地址。
Q3: C语言中函数指针用法
从语法上看,你只须把指针声明语句中的指针名字和名字左边的指针声明符*去掉,剩下的就是指针所指向的类型。
函数指针有两个用途:调用函数和做函数的参数。
函数指针是指向函数的指针变量。因此“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。
关于c语言指针定义与调用格式和c语言指针的用法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







