京东网站设计特点,官方网站建设最重要的是,做网站需要了解哪些知识,网站搭建上海C语言中有很多关于指针的使用#xff0c;指针也是C语言的灵魂所在#xff0c;而且C语言中也有很多有关指针的概念#xff0c;这里学习并总结了一些知道的概念。常量指针#xff1a;首先它是一个指针#xff0c;常量只是用来修饰指针的定语。其定义如下#xff1a;char co…C语言中有很多关于指针的使用指针也是C语言的灵魂所在而且C语言中也有很多有关指针的概念这里学习并总结了一些知道的概念。常量指针首先它是一个指针常量只是用来修饰指针的定语。其定义如下char const * cp;char aa;如何识别呢?根据右结合优先先是*优先所以这个cp变量是一个指针然后是const修饰*所以这是一个常量指针。即指向常量的指针。cpa; //正常语法*cpa; //错误语法因为其指向的值是一个常量指针常量首先它是一个常量指针是用来修饰常量的即常量的值为一个指针地址。char * const cp;char aa;如何识别呢?根据右结合优先先是const优先所以这个cp变量是一个常量然后是*修饰const所以这是一个指针常量。cpa; //错误语法因为其地址为是一个常量*cpa; //正确地址所指向的内容是一个普通字符指针数组首先它是一个数组指针是用来修饰数组内容的表示什么样的数组 即存放指针的数组char *arr[3] {1,123,345};如何识别因为[]的优先级大于*所以先是定义为一个数组而后由*来修饰这个数printf(arr0%c\n,*arr[0]);printf(arr1%s\n,arr[1]);数组指针首先它是一个指针数组是修饰指针的即指向数组的指针。char (*p)[3]; //申明时不能同时初始化char arr[3] {1,4,7};parr; //指向数组的首地址同时指针的类型是char * [3] 类型的即加1操作后为sizeof(char [3])三个字节数如何识别因为这次添加了一个显示优先所以这次先是一个指针而后[]修饰指针printf(%c\n,(*p)[0]); //先取arr的首地址再根据这个地址取数组内容printf(%c\n,(*p)[1]);printf(%c\n,(*p)[2]);printf(%c\n,*((char*)p0)); //先转换为char指针再取值printf(%c\n,*((char*)p1));printf(%c\n,*((char*)p2));printf(%c\n,((char*)p)[0]); //先转换为char指针再取数组的值和第一个类似printf(%c\n,((char*)p)[1]);printf(%c\n,((char*)p)[2]);函数指针首先它是一个指针函数是修饰指针的即指向函数的指针。char (*func)(void); //定义函数指针char test(void){return A;}func test; //初始化赋值printf(test address: %p\n,test);printf(func address: %p\n,func);char ch func(); //调用printf(%c\n, ch);如何识别同数组指针一样因()的优先级所以这个定义首先是一个指针而后才是对指针的描述即一个指向函数的指针其指向的函数也是规定的即返回的是字符类型不需要传入参数指针函数首先它是一个函数指针修饰函数的返回类型即一个返回指针的函数char *func(void);如何识别因为没有扩弧所以*的优先级没有右边的扩弧优先级高所以先是规定了一个函数*只是修饰返回值的char *func(void) {char *str test;return str;}void main() {char *test func();printf(%s\n,test);}结构体指针当然其原先也是一个指针只不过就是指向了结构体而已。故而为结构体指针。指针结构体指针结构体其实也没有必要有这个概念无非就是带有指针作为子项的结构体。指针类型转换指针类型转换是个有意思的东西你可以把一个int型的指针转换为char类型然后再把char类型的指针转换为int型就像普通的字符和int型之间的转换一样。但指针转换后其值没有变唯一变的东西就是指针的步长即进行指针运算时的计算方式。当为char指针时其运算单位均以1个字节为1个运算单位而当为int指针时通常都是以4个字节为1个运算单位。指针算术根据上面的指针类型转换介绍可知不同的指针类型进行算术运算时其计算方式时不相同的其不同之处就在于其步长的字节数不同而具体其步长为几个字节数是以其指针类型决定的指向char的指针步长即为1。通常的指针运算有指针与数字的加减运算相同类型的指针的减法运算而且还要是指向同一个数组的不然意义不大。同理推得不同类型的指针进行运算意义更不大甚至会报错。下面举一个指针算术的例子交换两个变量值不利用额外变量毕竟new关键字还是申请了额外的内存虽然没有申请变量换汤未换药int *a,*b;anew int(10); //给指针赋值bnew int(20); //a0x00030828,b0x00030840a(int*)(b-a); //a0x00000006b(int*)(b-int(a)); //b0x00030828a(int*)(bint(a)); //a0x00030840只是交换变量的话也可以int a 4;int b 5;*(((char*)a)1) *((char*)b);*((char*)b)*((char*)a);*((char*)a)*(((char*)a)1);*(((char*)a)1)0;指针参数指针参数就是指指针作为函数的参数进行传递因为C语言只支持单向传值且返回值只能是一个值类型所以想要从函数内返回多个内容或者与函数体有一个共同的数据操作区域那这个时候就可以考虑通过传指针参数的方式了。传指针也是传值只不过这时的值为指针指向的地址也就是一个int整数。通过传递一个地址后就可以对一个共同的区域进行操作和数据共享了。指针指针指针的指针就是指向指针的指针同理还有指向指针指针的指针不过一般人的思维能做二级、三级的指针的就很好了。这里主要是扩展一下指针与多维数组的关联关系。从个别到一般来分解多维数组的处理。这里个别肯定是用二维数组来举个例子那就可以延伸到多维数组。