空心人专栏

where is my lover

Linux编程学习一

从今天开始,打算学习linux编程。
一看,C语言都忘的差不多了,还是先复习一次C吧。
看看我今天都看了些什么:
for循环,for(表达式1;表达式2;表达式3),在执行for循环的时候,首先是表达式1赋值,
然后用表达式2对表达式1进行判定,如果正确就执行for循环里面的语句,不正确就退出循环。
执行完一遍后,然后执行表达式3,再用表达式2对表达式3进行判定....

还看了一下指针,指针是指向变量的地址变量。变量的指针就是变量的地址。
定义指针:int *pointer;
在定义了以后,*pointer=3;与i=3是等价的,但是类型必须相同;
指针指向变量:pointer=&i;
注意:指针变量中只能存放地址(指针);
&*pointer与&a相同;
*&a与a相同。
(*pointer)++相当于a++;
在用指针作为形参的时候,它会改变实参的值,在C语言中实参变量与形参变量之间的数据传递是单向的
“值传递”方式。

数组指针和指向数组的指针变量:
C语言规定数组名代表数组的首地址。
int a[9];
int *p=a;
p+i与a+i就是a[i]的地址,*(p+i)或*(a+i)是p+i所指向的数组元素的值,即a[i];
p[i]与*(p+i)等价;
*p++ 等价于 先*p,然后p++;
*(++p) 等价于 先p++,后*p;
(*p)p++指p指向的元素加1
f(int arr[], int n) 与 f(int *arr, int n)等价。
数组做形参时,它会改变实参的值。

指向多维数组多指针和指针变量:
#define FORMAT "%d, %d/n"

int main()
{
        int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
        printf(FORMAT,a,*a);                     printf("数组a的首地址/n");
        printf(FORMAT,a[0],*(a+0));         printf("第一行的首地址/n");
        printf(FORMAT,&a[0],&a[0][0]);     printf("a[0][0]的地址/n");
        printf(FORMAT,a[1],a+1);                 printf("第二行的首地址/n");
        printf(FORMAT,&a[1][0],*(a+1)+0); printf("a[1][0]的地址/n");
        printf(FORMAT,a[2],*(a+2));             printf("第三行的首地址/n");
        printf(FORMAT,&a[2],a+2);                 printf("a[2][0]的地址/n");
        printf(FORMAT,a[1][0],*(*(a+1)+0)); printf("a[1][0]的值/n");
}
阅读更多
文章标签: linux 语言 编程 c
个人分类: Linux编程
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭