c语言: 不好理解的指针。很短的程序

c语言: 不好理解的指针。很短的程序,第1张

答案是6

int a[6] = {1,2,3,4,5,6}; 这句a就是指向1所在地址的指针

int ptr = (int)(&a+1); a和&a是不同的 &a的类型是 int[6] 所以它加一的结果是 1所在位置加上6个int元素的大小 也就是6后面一个数字 是未知的

printf("%d\n" , (ptr-1) ); 这句话就简单了,就是取出了6

如果这边第二句的&a改成a 那答案就是1了

兄弟,你如果把前两句写成一个文件,文件叫avgm把后两句写到另一个文件里,这个文件叫什么无所谓,然后运行就可以了

你的问题是没有理解matlab的函数是怎么运行的,函数只能写成一个文件,然后在其他文件中调用它,不能像其他语言一样在函数文件中调用函数,如果那样调用的话,matlab会找不到avgm,所以就会说avg没有定义,懂了么?

r = Test1 = "Test"这句可能有问题,

Test1 = "Test"的计算结果为布尔型,强制转换为整型后结果只能是1或0

即你的变量r可能的只有0或1

“周长”&c&”cm“不合理啊应该是 “周长” & c & ”cm“

START: CLR 00H ;将00H但愿的内容清零

MOV R7,#04H ;将立即数04H送给寄存器R7

MOV R0,#20H ;将将立即数20H送给寄存器R0

LOOP: MOV A,@R0 ;将20H单元的内容送给计数器ACC

MOV 2BH,A ;将累加器ACC内的数放到2BH单元

INC R0 ;计数器R0+1

MOV 2AH,@R0 ;将21H的内容送到2AH单元

CLR C ;清除标志位

SUBB A,@R0 ;将21H单元的内容与A中的相减结果放在A中

JC NEXT ;判断是否有借位!有则跳转至NEXT;

MOV @R0,2BH

DEC R0

MOV @R0,2AH

INC R0

SETB 00H

NEXT: DJNZ R7,LOOP //R7自减1后不为零,则跳转至LOOP

JB 00H,START

SJMP $

(20H)=0D3H,(21H)=30H,(22H)=45H,(23H)=82H

后面的分析是一样的

DEC是自减1;

SETB是置位

SJMP:短跳转

原因很简单

假设文件中存入的是

2 2 2 2 2 2 2 2

1 1 1 1 1 1 1 1

系统默认还要加个文件结束符EOF(多数情况下为-1)

第一种情况下读了两条记录后,继续读EOF会返回0值,所有只有两条记录输出

而第二种情况下 !feof(fp) 的值在读EOF时仍然为真,读完之后才会为假,所有会有三条记录。

你可以建立一个空文件,测试一下

if(!feof(fp))

printf(“a”);

这样会输出一个a;

懂了不?

以上就是关于c语言: 不好理解的指针。很短的程序全部的内容,包括:c语言: 不好理解的指针。很短的程序、帮我看一段很短的MatlaB程序吧、vb 基本问题 刚开始自学,很短的程序,帮忙纠错一下等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10103946.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存