| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1653 人关注过本帖, 4 人收藏
标题:【新手向 大牛慎入】【瞎眼向】【内有指针妹子玉照】单纯的指针妹子和她的狐 ...
只看楼主 加入收藏
一个孩子
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:356
专家分:954
注 册:2012-10-1
收藏
得分:0 
还是妹子漂亮些

重要的不是结果,是求一个结果的过程,哪怕千难万难,当你有想要的结果时,你已走的很远
2012-11-29 21:41
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
程序代码:
#include <stdio.h>

typedef struct {
    short a;
    char  b;
    char  c;
} X;

typedef struct {
    char  a;
    short b;
    char  c;
} Y;

typedef struct {
    int   a;
    short b;
    short c;
} Z;

int main(void)
{
    int x = sizeof(X), y = sizeof(Y), z = sizeof(Z);
    printf(&y["Hello,What is that?\n%s"], &z["GirlGirl"]);
    printf(&x["Yes,%c%c%c%c %c%c %c!\n"], 0["This"], 1["That"], 2["beauty"], 3["pretty"], 4["isisis"], 5["isisis"], 6["CCCCCCC"]);
    return 0;
}

比如讲讲这个,记得我刚来论坛的时候就有朋友发过这种问题贴,听说有公司就出过这种类型的面试题,我写了另一个版本,大家可以看看!呵呵

My life is brilliant
2012-11-29 22:17
Alar30
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:10
帖 子:988
专家分:1627
注 册:2009-9-8
收藏
得分:0 
前来看指针妹子的。。。
2012-11-29 22:43
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
以下是引用lz1091914999在2012-11-29 22:17:06的发言:

#include  
 
typedef struct {
    short a;
    char  b;
    char  c;
} X;
 
typedef struct {
    char  a;
    short b;
    char  c;
} Y;
 
typedef struct {
    int   a;
    short b;
    short c;
} Z;
 
int main(void)
{
    int x = sizeof(X), y = sizeof(Y), z = sizeof(Z);
    printf(&y["Hello,What is that?\n%s"], &z["GirlGirl"]);
    printf(&x["Yes,%c%c%c%c %c%c %c!\n"], 0["This"], 1["That"], 2["beauty"], 3["pretty"], 4["isisis"], 5["isisis"], 6["CCCCCCC"]);
    return 0;
}
 
比如讲讲这个,记得我刚来论坛的时候就有朋友发过这种问题贴,听说有公司就出过这种类型的面试题,我写了另一个版本,大家可以看看!呵呵
这个是不是牵扯到对齐模式 和首地址定位?
呵呵 很不错的东西哦。

梅尚程荀
马谭杨奚







                                                       
2012-11-30 08:06
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 楼主 zklhp
我认为第一个比较关键。



梅尚程荀
马谭杨奚







                                                       
2012-11-30 08:16
冰冻零点
Rank: 3Rank: 3
来 自:西安电子科技大学
等 级:论坛游侠
帖 子:81
专家分:136
注 册:2012-9-18
收藏
得分:0 
学习

好好学习,天天向上
2012-11-30 08:39
a635958000
Rank: 4
等 级:业余侠客
帖 子:55
专家分:253
注 册:2012-10-26
收藏
得分:0 
回复 12楼 lz1091914999
这个不错,能解释一下就更好了。
2012-11-30 09:16
fz19910125
Rank: 2
来 自:上海
等 级:论坛游民
帖 子:52
专家分:11
注 册:2010-10-12
收藏
得分:0 
以下是引用zklhp在2012-11-29 16:26:44的发言:


;*****************************************************************************************************************
;作者:zklhp
;Email:zklhp@
;QQ:493165744
;2012.11.29
;版权所有 转载请保持完整
;*****************************************************************************************************************

指针其实很萌哒 乃们不要黑她        ——题记

指针其实个单纯的妹子 我认识她的时候指针是这样介绍自己的用法的

 
    int a = 0;
    int *pa = NULL;
    pa = &a;
    *pa = 5;
    printf("*(%p)=%d\n", pa, *(pa));


你们不觉得指针的基本用法就是上面写的这几个么。。。

麻烦的是指针的那些狐朋狗友 可惜啊 C语言里面很多东西都是指针的狐朋狗友 而且很多东西离不了指针 今天我简单列举一下C语言里面指针的狐朋狗友 可能不全 而且很多地方没法解释的很清楚 欢迎各位补充

注意 以下的很多代码是错误的 千万不要把错的学会了

指针和静态存储区域不能不说的故事
 
    char *p = "指针妹子我爱你!";
    p[4] = '\0';    //WRONG

用指针访问也无法改变字符串是在静态存储区域的事实 在这个程序里面 静态存储区域就是不能改了 除非使用特殊手段或改编译参数
正确的是
 
    char p[] = "指针妹子我爱你!";
    p[4] = '\0';

这里相当于[]内会自动加一个数让这个字符串够 这是数组 是在堆栈分配的 所以可以改


指针和堆栈不能不说的故事
是不是我用堆栈就好了呢 不是的。。。
 
char *func(void)
{
    char p[] = "指针妹子我爱你!";
    return p;        //WRONG
}

这里 由于函数在退出的时候函数的堆栈就销毁了 所以 指向已经销毁的内存的指针也是无意义的 这种指针不要也罢


指针和内存分配不能不说的故事
看来我用内存分配就好了 这样就不会出错了罢
 
    int *p = malloc(1024*sizeof(int));
    ...
    p = NULL;    //这样就释放了这块内存了罢    //WRONG

上述用法除了会带来内存泄露不会有什么其他的事情发生 释放的正确方法是free()函数
当然 在指针释放后将指针赋值为NULL是个好习惯 可以减少错误的发生 而且在使用指针的时候可以判断一下指针是否是NULL 但这只能减少 无法避免 这是C的内存管理机制决定的 该发生的还是会发生


指针和“变量交换”不能不说的故事
 
void swap(int *pa, int *pb)
{
    int *pt = NULL;
    pt = pa;
    pa = pb;
    pb = pt;
}

错 这里只不过在函数内部交换了两个变量 而不是通过变量交换两个值 所以这个函数其实什么都没做 一旦这个函数返回了 函数的堆栈销毁了 连美好的回忆都剩不下的 正确的是
 
void swap(int *pa, int *pb)
{
    int t = 0;
    t = *pa;
    *pa = *pb;
    *pb = t;
}



指针和自增/自减不能不说的故事
指针的加法/减法加的其实是指针变量指向的类型的大小(例子待补充)


指针和“数组退化为指针”不能不说的故事
待补充


指针和const不能不说的故事
待补充

后面还有啥啊 想不出了 先这些罢 该去搬砖了
程序代码:
void swap(int *pa, int *pb)

{

    int *pt = NULL;

    pt = pa;

    pa = pb;

    pb = pt;

} 
这个可以详细的讲解一下吗?
2012-11-30 09:27
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用fz19910125在2012-11-30 09:27:02的发言:

void swap(int *pa, int *pb)
 
{
 
    int *pt = NULL;
 
    pt = pa;
 
    pa = pb;
 
    pb = pt;
 
} 这个可以详细的讲解一下吗?

首先要知道C语言都是传值的 所以这里只不过把两个指针的值 注意是指针的值也就是指针变量的内容 给了这个函数 然后再这个函数里面 这两个参数交换了一下顺序 然后呢 然后没有了 这样的话 函数退出后 swap()里面的这些参数啦 局部变量啦 都没了 而因为是传值的 所以对调用的时候的 swap(&i, &j); 的i j 没有任何的影响

看的人少 不写了 顺便 前面大牛说的那个太复杂了 作为一个新手教程写不到这种深度 我把它放帖里让大家看看罢 多谢各位支持
2012-12-01 15:16
wit_stel
Rank: 1
等 级:新手上路
帖 子:6
专家分:2
注 册:2012-11-28
收藏
得分:0 
先占位。。。。。
2012-12-01 17:31
快速回复:【新手向 大牛慎入】【瞎眼向】【内有指针妹子玉照】单纯的指针妹子和 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021684 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved