这些是死知识,把常用的记住,不常用的直接查表就行了
目前创新互联建站已为1000多家的企业提供了网站建设、域名、网页空间、网站托管、服务器租用、企业网站设计、洛川网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf。
type Human struct {
Name string
}
var people = Human{Name:"zhangsan"}
golang没有 '%u' 点位符,若整数为无符号类型,默认就会被打印成无符号的。
宽度与精度的控制格式以Unicode码点为单位。宽度为该数值占用区域的最小宽度;精度为小数点之后的位数。
操作数的类型为int时,宽度与精度都可用字符 '*' 表示。
对于 %g/%G 而言,精度为所有数字的总数,例如:123.45,%.4g 会打印123.5,(而 %6.2f 会打印123.45)。
%e 和 %f 的默认精度为6
对大多数的数值类型而言,宽度为输出的最小字符数,如果必要的话会为已格式化的形式填充空格。
而以字符串类型,精度为输出的最大字符数,如果必要的话会直接截断。
使用起来很简单,一般配合fmt.Printf()使用,因为fmt的Printf()是有格式的输出,切忌使用Println(),否则将会以字符串的形式输出。
查看原文: golang fmt格式“占位符”
fmt.Printf 会根据后面参数格式化前面的字符串 ,fmt.Println 不会。
以下代码在VC6.0以上版本测试通过!
输出结果:6
#include stdio.h
int main(void)
{
int a[2][2] = {{1,2}, {3,4}};
int b[2][2] = {{5,6}, {7,8}};
int (*p1)[2] = a;
int (*p2)[2] = b;
int (*q[2])[2] = {p1, p2}; 这样才是正确的定义!
printf("%d\n", *(*q[1]+1));
return 0;
}
但在tc2.0和bc3.1中提示非法初始化!
但把
int (*q[2])[2] = {p1, p2};
改成
int (*q[2])[2];
q[0] = p1;
q[1] = p2;
可以通过!
原因暂不清楚,估计是老旧的编译器不支持太复杂的定义!
其实最好的方法是使用typedef,简单明了,可读性大大提升!
#include stdio.h
int main(void)
{
typedef int (*PA)[2]; 使用typedef
int a[2][2] = {{1,2}, {3,4}};
int b[2][2] = {{5,6}, {7,8}};
int (*p1)[2] = a;
int (*p2)[2] = b;
PA q[2]= {p1, p2}; 这样可读性是否大大的增加?!
printf("%d\n", *(*q[1]+1));
return 0;
}
这个就是C语言本身的功能啊
C的函数名,在程序中都是代表函数的地址,main是主函数,它就是一个地址
而%x表示十六进制输出内容(你用%d或%p也都是可以的,特别是%p,就是用来输出地址的)