[todo0211]c语言指针,结构体的疑问
#include <stdio.h>
#include <mm_malloc.h>
struct ListNode {
int val;
struct ListNode *next;
};
struct ListNode* init(struct ListNode* L){//tt1
/*我的实验结果告诉我:
参数里面的L容器(tt1处)有了一个全新的位置,比如0x7ffee9ec28f8,而传入
之前,L在main 里面(tt2处)的位置是: 0x7ffee9ec2928
content 倒是和main 里面,声明L时候的 content 8 一样,所以tt3 输出8
唯一不同的,就是address , tt4 就是 0x7ffee9ec28f8
所以我们 洞见 一个 事实: call by value:
tt1 的新L 把 main 里面的tt2 的L 的内容给拿了过来;
所以或许有这么一个事实: ptrX = ptrY 的时候,ptrX 就是把prtY指向地址的
内容给拿了过来。 一如 tt2 拿了 tt1 的content 8;
实际上,我还是没理解 tt5,请回答,相关: 指向指针的指针
*/
printf("content of node in init(bef), is: %d\n", L);//tt3 : 8
printf("address of node in init(bef), is: %p\n", &L);//tt4
L = (struct ListNode*) malloc (sizeof(struct ListNode*));
printf("content of node in init(aft), is: %d\n", L);//guess not 8?enen
printf("address of node in init(aft), is: %p\n", &L);//这里和tt4 的位置一样,为啥?malloc 没有分配新的空间?tt5
printf("above should be different from in main one\n");
L->val = 9;
L->next = NULL;
return L;
}
struct ListNode* fuc(struct ListNode* head)
{
printf("address of node in fuc, is: %p\n", &head);//
printf("val of node in fuc, is: %d\n", head->val);//9
return NULL;
}
int main()
{
struct ListNode* L = {8};//tt2
printf("content of node in main(bef), is: %d\n", L);
printf("address of node in main, is: %p\n", &L);//0x7ffee516c928
L = init(L);
fuc(L);
}
result:

[todo0211]c语言指针,结构体的疑问的更多相关文章
- C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com
原文:C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | I ...
- 将c语言的结构体定义变成对应的golang语言的结构体定义,并将golang语言结构体变量的指针传递给c语言,cast C struct to Go struct
https://groups.google.com/forum/#!topic/golang-nuts/JkvR4dQy9t4 https://golang.org/misc/cgo/gmp/gmp. ...
- go语言初始化结构体指针
go语言初始化结构体指针 head:=&ListNode{} 或者 head:=new(ListNode)
- C语言中结构体赋值问题的讨论
今天帮师姐调一个程序的BUG,师姐的程序中有个结构体直接赋值的语句,在我印象中结构体好像是不能直接赋值的,正如数组不能直接赋值那样,我怀疑这个地方有问题,但最后证明并不是这个问题.那么就总结一下C语言 ...
- 【AT91SAM3S】SAM3S-EK Demo工程中,LCD驱动程序的加载(函数指针结构体)
为了调试LCD,在英倍特的板子上烧Atmel的sam3s-ek_demo_1.4_source示例代码.LCD显示正常了,却找不到LCD的驱动究竟在哪. 花了好久,追踪到了这个执行过程. 进入main ...
- 01.C语言关于结构体的学习笔记
我对于学习的C语言的结构体做一个小的学习总结,总结如下: 结构体:structure 结构体是一种用户自己建立的数据类型,由不同类型数据组成的组合型的数据结构.在其他高级语言中称为记录(record) ...
- C语言中结构体对齐问题
C语言中结构体对齐问题 收藏 关于C语言中的结构体对齐问题 1,比如: struct{short a1;short a2;short a3;}A;struct{long a1;short a2;}B; ...
- 逆向知识第十四讲,(C语言完结)结构体在汇编中的表现形式
逆向知识第十四讲,(C语言完结)结构体在汇编中的表现形式 一丶了解什么是结构体,以及计算结构体成员的对其值以及总大小(类也是这样算) 结构体的特性 1.结构体(struct)是由一系列具有相同类型或不 ...
- C语言中结构体赋值问题的讨论(转载)
今天帮师姐调一个程序的BUG,师姐的程序中有个结构体直接赋值的语句,在我印象中结构体好像是不能直接赋值的,正如数组不能直接赋值那样,我怀疑这个地方有问题,但最后证明并不是这个问题.那么就总结一下C语言 ...
- go语言学习-结构体
结构体 go语言中的结构体,是一种复合类型,有一组属性构成,这些属性被称为字段.结构体也是值类型,可以使用new来创建. 定义: type name struct { field1 type1 fie ...
随机推荐
- 【转载】C/C++预处理器
转自:http://www.cnblogs.com/lidabo/archive/2012/08/27/2658909.html C/C++编译系统编译程序的过程为预处理.编译.链接.预处理器是在程序 ...
- 百炼OJ - 1005 - I Think I Need a Houseboat
题目链接:http://bailian.openjudge.cn/practice/1005/ 思路 一个半圆面积每年增长50,已知一个点坐标,求第几年点在半圆内. #include <stdi ...
- openshift3.10集群部署
简介 openshift是基于k8s的开源容器云. 要求 系统环境:CentOS 7.5 搭建一个master节点,两个node节点 注意: openshift3 依赖docker的版本为1.13.1 ...
- 【网易官方】极客战记(codecombat)攻略-地牢-囚犯
关卡连接: https://codecombat.163.com/play/level/the-prisoner 解放囚犯,你会得到盟友. 简介 敬请期待! 默认代码 # 释放囚犯,击败守卫并夺取宝石 ...
- 1.1Jmeter学习网站
在网上找到一些关于Jmeter学习的博客等,在此标记 一. chinaunix的一篇博客,讲的蛮详细的 http://blog.chinaunix.net/uid/26884465/cid-16819 ...
- HDU2121 Ice_cream’s world II (最小树形图)
在建图的时候对原图进行加边 建立一个超级源点~ #include<cstdio> #include<algorithm> #include<cstring> usi ...
- c++工程编译记录
test3.c #include <stdio.h> #include <cpptest/cpptest.h> int test(int argc,char **argv); ...
- 设备驱动基础学习--poll
使用非阻塞I/O的应用程序通常会使用select()和poll()系统调用查询是否可对设备进行无阻塞的访问,这两个系统调用最终又会引发设备驱动中的poll()函数被执行,所以我们的问题就集中到了如何编 ...
- 使用jenkins 实现 .net core项目自动发布到 docker
在Docker内运行Jenkins pull镜像 docker pull jenkins/jenkins:lts Dockerfile FROM jenkins/jenkins:lts USER r ...
- Linux双网卡bond、起子接口
适用场景 服务器两张网卡需要做bond,并且bond后网卡需配置不同网段的地址,用于走不同流量,这个时候就可以采用起子接口的方式. 实验场景 设备 服务器:Server_A 核心交换机:Switch_ ...