编写c语言一个子函数stm 用于计算主调函数ab的积和商

Python015

编写c语言一个子函数stm 用于计算主调函数ab的积和商,第1张

这样么?

#include<stdio.h>

#include<stdlib.h>

void stm(int a,int b){

 printf("a=%d\tb=%d\n",a,b)

 printf("ab的积是%d\n",a*b)

 printf("ab的商是%d\n",a/b)

}

int main(){

 int a,b

 a=20,b=5

 stm(a,b)

 return 0

}

一句话概括,就是告诉编译器pao3这个变量里存的是一个地址值而不是一个整形变量值,虽然他们的表现形式都一致!然后再详细剖析一下上面这句C语言。“u32 *pao3”中

变量类型不是u32,而是u32*。表示变量名pao3所在地址存放的是一个地址值,如果是u32,则表示只是存放的一个32位的整形数据。而地址0x4FFF0001内存放的东西才是32位的整形数据,而这个数有可能是某个整形变量的值或是一个32位寄存器的值。赋值语句后面的(u32*)是一个强制类型转换。所赋的值必须与定义的变量一致。你也可以试试如果把那句话改为u32 *pao3=(u32)(0x4FFF0001)或是u32 *pao3=0x4FFF0001都是会报错的。编译器以为你把一个整形变量赋给了一个指针变量。然后如果你要取该寄存器(0x4FFF0001)的值,则直接取*pao即可,比如printf("%x\n",*pao),如果是在计算机中,你会得到显示13247A1A.