MIT的C指针练习代码

觉得很好的代码,贴出来.   大概瞄了一眼,感觉不是很难  现在比较忙,以后做解析(如果有必要的话)

#include <stdio.h>
#include <stdlib.h>

void
f(void)
{
    int a[4];
    int *b = malloc(16);
    int *c;
    int i;

    printf("1: a = %p, b = %p, c = %p\n", a, b, c);

    c = a;
    for (i = 0; i < 4; i++)
	a[i] = 100 + i;
    c[0] = 200;
    printf("2: a[0] = %d, a[1] = %d, a[2] = %d, a[3] = %d\n",
	   a[0], a[1], a[2], a[3]);

    c[1] = 300;
    *(c + 2) = 301;
    3[c] = 302;
    printf("3: a[0] = %d, a[1] = %d, a[2] = %d, a[3] = %d\n",
	   a[0], a[1], a[2], a[3]);

    c = c + 1;
    *c = 400;
    printf("4: a[0] = %d, a[1] = %d, a[2] = %d, a[3] = %d\n",
	   a[0], a[1], a[2], a[3]);

    c = (int *) ((char *) c + 1);
    *c = 500;
    printf("5: a[0] = %d, a[1] = %d, a[2] = %d, a[3] = %d\n",
	   a[0], a[1], a[2], a[3]);

    b = (int *) a + 1;
    c = (int *) ((char *) a + 1);
    printf("6: a = %p, b = %p, c = %p\n", a, b, c);
}

int
main(int ac, char **av)
{
    f();
    return 0;
}
时间: 2024-08-11 07:37:51

MIT的C指针练习代码的相关文章

C++中的引用与指针 汇编代码

int main(int argc, char ** argv){........ int x = 3;003913DE mov dword ptr [x],3 int &y = x;003913E5 lea eax,[x] 003913E8 mov dword ptr [y],eax int *z = &x;003913EB lea eax,[x] 003913EE mov dword ptr [z],eax *z = 4; 003913F1 mov eax,dword ptr [z]

微信小程序-开心大转盘(圆盘指针)代码分析

大转盘是比较常见的抽奖活动 .以前做过h5的大转盘,最近小程序比较火,客户要求做小程序的大转盘.我们就来分析下代码.先上几个图:     界面效果还是很不错的. 做界面还是比较容易的,只要有前端基础没啥难度. 关键是 抽奖的动画,我们就是要小程序本身的动画: 界面加载的时候定义一个动画对象: onLoad(opt) { this.setPlateData(); //执行设置转盘表面的文字 let that = this; let aniData = wx.createAnimation({ //

设置鼠标指针图片代码

using UnityEngine; using System.Collections; public class mouseCursor : MonoBehaviour { /// <summary> /// 变换样式 /// </summary> public Texture2D cursorTexture; /// <summary> /// 默认鼠标样式 /// </summary> public Texture2D fTexture; /// &l

IOS 阶段学习第八天笔记(指针)

                                                        IOS学习(C语言)知识点整理 一.指针 1)概念:存储变量的地址的一个变量. 2) 数据存储类型分析 1.text (代码段) :存储二进制的可执行代码 2.data(初始化的数据段) 存储初始化的全局变量以及初始化的static修饰的变量,分为只读数据段 (如:字符串常量,整型常量)及可读可写数据段,静态存储. 3.data(未初始化的数据段)存储未初始化的全局变量及未初始化的st

C++的this指针

1. 一个对象占多大空间呢? 是由对象里面的成员变量决定的. 2. 成员函数保存在哪儿? 不在对象的内存里面,它在代码区.所有函数写完都在代码区,只有在调用的时候才去代码区找.既然函数不在对象里,那么函数里面的那个this指针代表当前对象是怎么回事??? 3. 调用成员函数时,会自动传this指针 4. this指针是指向当前对象的指针 5. 在成员函数中,可以将this指针当参数传递,也可以返回this指针,或返回通过this指针拿到的对象 #include <iostream> using

C++之智能指针20170920

/******************************************************************************************************************/ 一.C++智能指针_自己实现智能指针 1.使用局部变量结合new的方式,防止new导致的内存泄漏 class sp { private: Person *p; public: sp() : p(0) {}//表明sp的构造函数 继承person的无参构造函数 sp(

c指针 --笔记2返回指针值的函数

返回指针值的函数 一般带回指针值的函数,定义形式为: int *a (int x, int y); 看这个经典案例: #include <stdio.h> int main(int argc, char const *argv[]) { double score[][4] = {{60.0, 70.0, 80.5, 20.1}, {60.0, 70.0, 80.5, 21.1}, {60.0, 70.0, 80.5, 22.1}}; double *search(double(*pointer

指针数组和数组指针

指针数组:首先它是一个数组,数组的元素都是指针.它是“储存指针的数组”的简称.int *p1[10];数组指针:首先它是一个指针,它指向一个数组.它是“指向数组的指针”的简称.   int (*p2)[10]; 这里需要明白一个符号之间的优先级问题,关键在于p1.p2先和谁结合.“[]”的优先级比“*”要高.p1 先与“[]”结合,构成一个数组的定义,数组名为 p1,int *修饰的是数组的内容,即数组的每个元素.那现在我们清楚,这是一个数组,其包含 10 个指向 int 类型数据的指针,即指针

More Effective C++ 条款28 Smart Pointers(智能指针)

1. 智能指针(如标准库的auto_ptr,shared_ptr,weak_ptr,boost的scoped_ptr等)主要用于动态内存的管理,同时提供给用户与内置指针一样的使用方法,本条款主要涉及智能指针在构造与析构,复制和赋值,解引等方面的注意点,而非智能指针的实现细节. 2. 智能指针的构造,赋值,析构 智能指针的copy constructor,assignment operator,destructor对应于不同的观念而有不同的实现,主要有三种选择: 1).不允许对象的共享,在调用co