C语言
活捉一只大狗狗
这个作者很懒,什么都没留下…
展开
-
C语言的运算符优先级和基本变量类型
void不能直接定义变量,因为编译器不知道分配多少内存给变量。 当定义一个变量,编译器必须知道分配多少内存; void *p;//valid void a;//error 编译器不知道分配多少内存给a struct student { char name[30]; int age; struct student; }//error 编译器不知道给结构体student...原创 2019-10-02 19:43:36 · 300 阅读 · 0 评论 -
数组,地址,数组下标
数组时相同类型元素的集合 int arr[10];//arr内保存随机值 int arr[5] = {1,2}; //arr = {1,2,0,0,0}; int arr[]; //error int arr[] = {1,2};// arr[2] = {1,2}; 一般情况下,数组名代表数组首元素的地址 &arr代表整个数组的地址 *&arr得到的是数组收元素的地址 数组下标访问...原创 2019-10-02 20:16:46 · 1245 阅读 · 0 评论 -
sizeof的用法
sizeof返回的占用空间的大小是这个变量开辟的大小,而不只是它用到的空间,所以对结构体用的时候,大多数情况下就得考虑字节对齐的问题了; struct student { char a; int b; } printf("%d",sizeof(struct student));//8 #pragma pack(1) struct student { char a; ...原创 2019-10-06 14:25:21 · 166 阅读 · 0 评论 -
变量的间接赋值与间接引用
struct Student { char a; int b; char c; int d; }; struct Student p = { 'a', 1, 'b', 2 }; printf("p.d:%d\n",p.d); p.d = 1000; printf("%d\n", *(int *)((char *)&p + 12));//1000 (char *)&am...原创 2019-10-06 14:47:09 · 224 阅读 · 0 评论 -
指针数组与指向指针的指针的区别
int main() { char *s[4] = {"welcome","to","new","Beijing"}; char **p = s + 1; s[0] = ( *p++) +1; s[1] = *(p + 1); s[2] = p[1] + 3; s[3] = p[0] + (str[2] - str[1]); } s[0] == ...原创 2019-10-08 10:35:15 · 194 阅读 · 0 评论