找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1896|回复: 0
打印 上一主题 下一主题
收起左侧

指针的指针和指针的纠缠

[复制链接]
跳转到指定楼层
楼主
ID:71922 发表于 2015-1-10 22:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
   今天下午看了《C指针编程之道》看到第65页的例4-2,看到结果和自己想的不一样,突然有点懵了。。。久了没复习指针都忘了。。今晚又自己写一个程序实验,才 理顺思路,整明白。。。 写个日志留作日后复习。







试验程序。。。

#include "stdafx.h"


int main(int argc, char* argv[])
{
char *name[] = {"I love", "i like", "L Test"};
char **Pna;
char *dp;

puts("数组形式");
printf("%p(name[0]变量的地址)→%p(字符串的地址)→%s(里面的内容) \n", &name[0], name[0], name[0]);
printf("%p(name[1]变量的地址)→%p(字符串的地址)→%s(里面的内容) \n", &name[1], name[1], name[1]);
printf("%p(name[2]变量的地址)→%p(字符串的地址)→%s(里面的内容) \n", &name[2], name[2], name[2]);
puts("");

puts("指针的指针形式");
Pna = &name[0];// Pna:取变量变量自身所在的地址。*Pan取变量存储的地址。&Pna取指针自身的地址
printf("%p(name[0]变量的地址) → %p(字符串的地址) → %c → %p(指针Add)\n", Pna, *Pna, **Pna, &Pna);

Pna = &name[1];// Pna:取变量变量自身所在的地址。*Pan取变量存储的地址。&Pna取指针自身的地址
printf("%p(name[1]变量的地址) → %p(字符串的地址) → %c → %p(指针Add)\n", Pna, *Pna, **Pna, &Pna);

Pna = &name[2];// Pna:取变量变量自身所在的地址。*Pan取变量存储的地址。&Pna取指针自身的地址
printf("%p(name[2]变量的地址) → %p(字符串的地址) → %c → %p(指针Add)\n", Pna, *Pna, **Pna, &Pna);
puts("");

//Pna 中存放着变量自身所在的地址 变量自身的地址中存放着字符串所在的地址 字符串所在的地址中放着字符串
//Pna 取变量变量自身所在的地址 %p 输出地址
//*Pna取变量所存储的字符串地址 %p 字符串首地址 %s 直接输出字符串
//**Pna则直接得到字符串中某一个字符 %c打印字符

puts("指针的形式");
dp = name[0];// dp:取变量存储的地址。
printf("%p(字符串的地址) = %s(里面的内容) = %c\n", dp, dp, *dp);
dp = name[1];// dp:取变量存储的地址。
printf("%p(字符串的地址) = %s(里面的内容) = %c\n", dp, dp, *dp);
dp = name[2];// dp:取变量存储的地址。
printf("%p(字符串的地址) = %s(里面的内容) = %c\n", dp, dp, *dp);
puts("");

//指针能取:1、指针自身地址。2、变量所存储的地址和内容
//指针的指针能取:1、指针自身的地址。2、变量自身的地址。3、变量所存储的地址和内容
//结论:指针只能取变量所存储的地址和内容,而指针的指针则能取变量自身的地址和所存储的地址和内容

puts("");
return 0;
}

输出的内容:

数组形式
0012FF74(name[0]变量的地址)→0042224C(字符串的地址)→I love(里面的内容)
0012FF78(name[1]变量的地址)→00422244(字符串的地址)→i like(里面的内容)
0012FF7C(name[2]变量的地址)→0042223C(字符串的地址)→L Test(里面的内容)

指针的指针形式
0012FF74(name[0]变量的地址) → 0042224C(字符串的地址) → I → 0012FF70(指针Add)
0012FF78(name[1]变量的地址) → 00422244(字符串的地址) → i → 0012FF70(指针Add)
0012FF7C(name[2]变量的地址) → 0042223C(字符串的地址) → L → 0012FF70(指针Add)

指针的形式
0042224C(字符串的地址) = I love(里面的内容) = I
00422244(字符串的地址) = i like(里面的内容) = i
0042223C(字符串的地址) = L Test(里面的内容) = L


Press any key to continue

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表