[c语言高手进深究一下extern的用法]1.全局变量放在头文件里面必须使用extern关键字修饰,如果不这么做,想想,如果多个源文件包含这个头文件,那么展开头文件时就会发生重定义的错误,使用extern指出,只声明该变量可能不...+阅读
指向函数指针就是定义一个指针,指向函数的头地址,等到系统需要用的时候,可以通过指针调用它。比如 先定义函数 int max(int a,int b){return a>b?a:b;} 再定义指向这个函数的指针 int (*P)(int a,int b);p=&max;注意int *p(int a,int b) 是指返回指针类型的函数,不是指针不能用它来指向任何东西。为啥不同涉及到优先级的问题~返回指针值的函数,就是这个函数最后返回的值是指针类型的。平常我们定义函数 int max(int a,int b){return a>b?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:指针是一个地址,指向的是个类型:
我们知道,c语言中的类型有int,char,bool(这个不常用),一般我们使用int,char就可以满足一般的类型需求的,如果对于变量的长度过大,就是用long ,float,double,关于各个类型使用的的长度问题,可以使用sizeof(int)或者sizeof(long)来查看各个类型,在系统中的小。
而指针就是一个8个字节(64系统)。
2:指针指向的是地址,地址指向的是内容:
我们需要一个变量,来存储地址,这个变量的值是地址,但是我们可以通过修改变量的值,来不断的改变地址,但是,我们如果需要改变该个地址的值的话,就需要,对地址的值进行修改,而不改变地址。
int a = 10;
int *p ;
p = &a;
*p =11;
a=?
这里我们看到,p 是一个变量,我们使用p来存储变量a的地址,这是,我们使用*p对于这个变量进行赋值,那么a的值最后,是多少呢,结果是11,因为我们使用*p赋值,就相当于a=11,赋值效果一样的。
3:指针的指针,是面对于指针的变量:
我们说,指针的指针的时候,就有点不清楚了,到底怎么区分指针和指针的指针呢。
char *p;
char **pr;
pr = &p;
我们这样看就清楚了一点,char *(*pr); *pr是一个存储的值为指针的变量,pr就是存储上个变量地址的变量。整合起来就是,pr是一个存储的值为指针的地址的变量。
这样,我们就基本,对于指针有一个直接的了解了。
C语言的指针运算符号
*称为指针运算符(单目运算符),也称取内容运算符。是用来表示指针变量和它所指向的变量直接的联系。如果已经定义i_pointer为指针变量,则(*i_pointer)是i_pointer所指向的变量。其实*i_pointer也是一个变量,它和变量i是同一回事。下面两个语句作用相同。
1、i=3;
2、*i_pointer=3; 第二个语句的含义是将3赋给指针变量i_pointer所指向的变量。 取地址运算符&,可以取得变量在内存中的地址。例如: pointer_1=&a; 表示把变量a的地址赋给pointer_1 * (*(a+1)+j)表示1行j列元素a[1][j]的值。 *(a+1)+j表示1行2列元素a[1][j]的地址。 这个没有为什么,就是规定的吧!
以下为关联文档:
C语言中指针的意思是什么?FAR指针又是什么指针是一个特殊的变量,它里面存储的数值被解释成为内存中的一个地址。要弄清一个指针的含义,需要搞清指针的四方面的内容:指针的类型、指针所指向的类型、指针的值或者叫指针所...
C语言中函数指针用法在C语言中,指针被广泛使用,而函数指针是最为高级的用法之一,也是容易疑惑的地方之一。 看下面这段代码: #include <stdio.h> void F(int a, int* output) { printf("a = %d\n", a)...
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]<...
c语言指针用法int top 应不属于指针的范畴了,而是int的常用变量的定义,这个top要看是怎么用法,如果按照负数,0,正数来使用的话,可以判断它是用来做为这个类的一个特殊的定义标识; 如果这个变量是...
c语言中指针数组和字符串数组的区别高手请进!#include "stdio.h" #include "string.h" void shellsort(char v[][10], int n); void writeline(char linp[][10],int n); main() { char line[][10]={"C++","Fortran","Basic","Pasca...
哪位大神帮忙把下面c语言程序注释一下再详细解释一下!跪谢了注释就以C的注释格式加在源程序行后面吧: /* 这前面几行包含库文件和函数原型的定义就不用解释了吧 */ #include#includeint menu(void); void jiami(void); void (*ptr)(voi...
c语言中指向指针的指针#include<stdio.h> #include<stdlib.h> #define M 3 #define N 3 void main() { void add(int **a,int **b,int **c,int rows,int cols); int i,j; int a[M][N],b[M][N],c[M...
c语言中指针传参因为数组的每一个元素在内存中是连续存放的,只要传递数据的首地址,你就可以根据对指针的"++"或--"操作,或直接在首地址上加上某个数,来得到数据其他的元素地址,然后用"*"操作符可以访...
一道简单C语言指针问题编程题!麻烦高手帮我改的简单容易理解英展开全部因为某种原因,本人共考过2次笔试,3次上机。其中笔试在70左右,3次上机均为满分, 看着大批的同学在为三级发愁不知道如何准备和应考。我想我应该把经验和学习的方法写下...