c语言指针知识用法大全,c语言 指针的指针 用法详解
C语言中指针有哪些用处。或者可以用来做什么,请简单举例说明
指针可以快速访问数组中的元素,想访问下一个,就自加1,上一个就自减1,下一行就自加一行,上一行就自减一行,特别适用快速逐点处理图像,
如:unsigned char img[1024][768],*p; int i,j; p=(unsigned char *)img; for ( i=0;i1024;i++) for ( j=0;j768;j++,p++ ) *p+=16;
指针还可以用不同类型来访问同一组数据:
unsigned char a[4],*p; unsigned int *q; p=a; *p=0x12; p++; *p=0x34; p++; *p=0x56; p++; *p=0x78; q=(unsigned int *)a; printf("%xH",*q);会输出十六进制数78563412H
另外指针可以用于给函数传递数组起始地址、结构地址、类地址、结构数组地址,这些复杂数据组合,函数返回值也是这样,另外利用指针还能不从数组起始地址开始传入数组。比如:char str[]; scanf("%s",str); printf("%s\n",str+1);
哪位高手能帮我解释一下C语言中指针的用的用法
指向函数指针就是定义一个指针,指向函数的头地址,等到系统需要用的时候,可以通过指针调用它。
比如
先定义函数
int
max(int
a,int
b){return
ab?a:b;}
再定义指向这个函数的指针
int
(*P)(int
a,int
b);p=max;
注意int
*p(int
a,int
b)
是指返回指针类型的函数,不是指针不能用它来指向任何东西。为啥不同涉及到优先级的问题~
返回指针值的函数,就是这个函数最后返回的值是指针类型的。平常我们定义函数
int
max(int
a,int
b){return
ab?a:b;}这里返回了int型的数据
若你这样定义
int*
max(int
*a,int
*b){return
*a*b?a:b;}就是返回了其中一个指向较大数值的指针,前面的(int*)用来说明函数返回值的类型。
指针数组
,从他的后缀就知道
他首先是数组,然后是存储指针的
比如
int*
a[10];定义了有十个元素的数组,数组元素类型是int*
型
即是指针
指向指针的指针
就是二级指针,指向一级指针的指针。比如
int
a=1;int*
p=a;(这里定义了一级指针p,指向a)int**
pp=p;
这是二级指针,指向p指针。也就是指向指针的指针。当然还有多级指针,不过不常用~
c语言指针用法?
1、使用场景
使用指针时,必须将它指向一个变量的地址或者为它分配空间方能使用,如下所示:
#includestdio.h
#include stdlib.h
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。
参考资料来源 :指针-百度百科
C语言指针的用法是什么?
指针是C语言中广泛使用的一种数据类型。运用指针编程是C语言最主要的风格之一。
利用指针变量可以表示各种数据结构;能很方便地使用数组和字符串;并能象汇编语言一样处理内存地址,从而编出精练而高效的程序。指针极大地丰富了C语言的功能。
学习指针是学习C语言中最重要的一环,能否正确理解和使用指针是我们是否掌握C语言的一个标志。
同时,指针也是C语言中最为困难的一部分,在学习中除了要正确理解基本概念,还必须要多编程,上机调试。只要作到这些,指针也是不难掌握的。