工作需要,开始做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会指向2002(int型占两字节,所以int型指针+1的话就是+2个字节。所以指针变量定义时需要指定基类型,不然运算时不知道移动几位,会读到错误的数据)

三、指针与数组

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

用数组名作为函数参数

#include <stdio.h>

void mian(){

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

Int array[10];

……

f(array,10);

}

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

……

}

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

GTK+2.0学习——C指针回顾的更多相关文章

  1. GTK+2.0学习——第一个GTK程序

    #include <gtk/gtk.h> #include <stdio.h> #include <stdlib.h> /* *点击了关闭按钮之后的回调函数 *gt ...

  2. GTK+2.0学习——code::block使用

    在之后使用中会慢慢去完善~~ 一.编码设置 1.设置文件编码:setting->editor->如图 2.设置编译时的编码(记住二者要统一):setting->compiler-&g ...

  3. linux下c图形化编程之gtk+2.0简单学习

    在linux下想做一个图形化的界面,然后自己选择使用gtk+2.0来进行编辑,我的电脑已经安装过gtk+2.0了,所以就在网上找了一个安装方法,结果未测试,大家有安装问题可以说下,一起探讨下. 1.安 ...

  4. Linux 下从头再走 GTK+-3.0 (五)

    实践中表明,纯粹利用 gtk 函数来创建 UI 是很繁琐的事,需要编写很多代码.怎样才能快速统一的建立 UI 布局呢? 可喜的是 GTK 提供了一个 GtkBuilder 用于快速创建界面.它读取一个 ...

  5. Linux 下从头再走 GTK+-3.0 (一)

    原本由于项目需求在 Linux 下学习过一段时间的 GTK+2.0 图形开发,时隔一段时间,想真正深入学习一下 GTK . 这次直接从头学习 GTK+-3.0 ,并写下博文便于日后查看,也方便新手入门 ...

  6. DirectX 总结和DirectX 9.0 学习笔记

    转自:http://www.cnblogs.com/graphics/archive/2009/11/25/1583682.html DirectX 总结 DDS DirectXDraw Surfac ...

  7. (转) 学习C++ -> 指针初步

    学习C++ -> 指针初步 一.指针    1. 什么是指针?        我们知道, 计算机的内存是由一个个独立的存储单元组成, 并且系统会对每一个存储单元分配一个唯一的号码, 称为这个存储 ...

  8. C++学习之指针的常见错误

    C++学习之指针的常见错误       我们在编程的过程中,有时候在使用指针的时候,删除一个指针以后一定要将这个指针设置为空指针,这是因为删除这个指针只是删除这个指针指向的地址,这个指针还真是的存在程 ...

  9. gtk+3.0的环境配置及基于gtk+3.0的python简单样例

    /*********************************************************************  * Author  : Samson  * Date   ...

随机推荐

  1. QTP使用技巧

    1QTP基本功能的使用 QTP的基本功能包括两大部分:一部分是提供给初级用户使用的关键字视图:另一部分是提供给熟悉VBScript脚本编写的自动化测试工程师使用的专家视图.但是,并没有严格的区分,在实 ...

  2. AngularJS and Asp.net MVC

    AngularJS 初印象------对比 Asp.net MVC 之前就早耳闻前端MVC的一些框架,微软自家的Knockout.js,google家的AngularJs,还有Backone.但未曾了 ...

  3. const 还是 static readonly

    到底是 const 还是 static readonly   真的一样? const 和 static readonly 常在程序中用来声明常量,调用方法也没有什么不同,他们真的一样吗?我们可以做个试 ...

  4. 使用 HttpClient 进行连接

    对于System.Net.Http的学习(二)——使用 HttpClient 进行连接   对于System.Net.Http的学习(一)——System.Net.Http 简介  使用 HttpCl ...

  5. python study

    python django restul webservice返回json数据 2013-09-27 23:14 by lixingle, 249 visits, 网摘, 收藏, 编辑 摘要:做这个d ...

  6. hightchart导出图片

    通常在使用highchart导出图片pdf等文件时,我们一般直接引入exporting.js即可 执行导出操作则会直接请求highchart服务器,执行生成图片等操作,然后下载到客户端: 但这一切的操 ...

  7. jQuery Fancybox插件介绍

    下面介绍一款jquery图片播放插件叫Fancybox,项目主页地址:http://fancybox.net/ Fancybox的特点如下: 1.可以支持图片.html文本.flash动画.ifram ...

  8. 利用.NET生成数据库表的创建脚本,类似SqlServer编写表的CREATE语句

    利用.NET生成数据库表的创建脚本,类似SqlServer编写表的CREATE语句 (喷血分享)利用.NET生成数据库表的创建脚本,类似SqlServer编写表的CREATE语句 在我们RDIFram ...

  9. OpenXml操作Word的一些操作总结.

    OpenXml操作Word的一些操作总结. OpenXml相对于用MS提供的COM组件来生成WORD,有如下优势: 1.相对于MS 的COM组件,因为版本带来的不兼容问题,及各种会生成WORD半途会崩 ...

  10. CentOS下Mysql安装教程

    CentOS下Mysql安装教程 本人学习Linux时使用的是CentOs5.5版本,在该环境中,Mysql的安装方法有很多种,下面我只讲我这次成功了的方法,作为一个记录,供大家参考,同时给自己做一个 ...