码迷,mamicode.com
首页 > 其他好文 > 详细

GTK+2.0学习——C指针回顾

时间:2016-12-11 18:24:50      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:访问   变量定义   回顾   实参   运算符   msu   指针运算   span   []   

工作需要,开始做GTK,但是很久没碰C了,来捡一下C的精华。

一、*&的意义

*:指针运算符

&:取地址运算符

两者优先级一样,从右向左方向结合

 

二、指针和指针变量

指针:一个变量的地址称为指针

指针变量:专门用来存放指针的变量。

 

#include <stdio.h>

void main(){

int a = 3;//定义一个值为3的变量,假设在内存中的地址为2000

int *pointer;//定义一个指向存放着int型数据的内存的指针变量

pointer = &a;//a的地址赋给pointer,pointer中存放的值为2000

printf("%d",a);//输出3

printf("%d",*pointer);//输出3

}

技术分享

int *pointer;//*的含义是,定义的这个变量是指针变量,只能存放指针;

printf("%d",*pointer);//*的含义是,访问pointer中存放的地址中存放的值。

 

&*pointer:取*pointer的地址,*pointer=3=a,即&a=2000

*&a&a=2000,则*&a的意思为访问地址为2000的内存中的值,即3=*pointer

 

*pointer++*pointer++:同优先级,自右向左结合,所以(*pointer++=a++;*pointer++=a,然后pointer会指向2002int型占两字节,所以int型指针+1的话就是+2个字节。所以指针变量定义时需要指定基类型,不然运算时不知道移动几位,会读到错误的数据)

 

三、指针与数组

技术分享

 

如果数组是float型的,则p+1实际的含义是指向四个字节之后的地址

 

用数组名作为函数参数

#include <stdio.h>

void mian(){

void fint arr[],int n;

Int array[10];

……

f(array,10);

}

void f(int arr[],int n){

……

}

 

把一个数组作为形参传值传的是地址,所以改变地址里面的值时,实参的值会变化。如果传变量的话传的是值,实参不会发生变化。

GTK+2.0学习——C指针回顾

标签:访问   变量定义   回顾   实参   运算符   msu   指针运算   span   []   

原文地址:http://www.cnblogs.com/ljab/p/6159891.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!