1.数组指针加一(a+1与&a+1)
int main(void) { int a[5]={1,2,3,4,5}; int ptr=(int )(&a+1); printf(“%d,%d”,(a+1),(ptr-1)); return 0; } 输出结果为2,5
&a指代整个数组,&a+1的值是数组末位加一;而a+1则指首位地址加一。 2.字符数组注意事项 sizeof: int main(int argc,char **argv) { char a[] = “abc”; printf("%d", sizeof(a));
return 0;
} 打印: 4 注:字符串末尾存在‘\0’ 3.结构体占用内存 32位单片机指针占用4个字节,所以结构体大小为4的倍数 struct a { //a和c共占3个字节 b占用4个字节 char a; short c; int b; }; struct a a1; void main() {
printf("%d", sizeof(a1));
} 输出为8 struct a { //a与c不在一个地址 char a; int b; short c;
}; struct a a1; void main() {
printf("%d", sizeof(a1));
} 输出为12