数据结构指针复习:
#include <stdio.h> void main() { int a[5] = {8, 2, 3, 4, 5}; // a[3] == *(3+a) printf("%d\n", *(3+a)); // a[3] 4 printf("*a其实就是a[0]: %d\n", *a); // 8 // 地址是连续的 printf("%p\n", a+1); printf("%p\n", a+2); printf("%p\n", a+3); }
一维数组名是个指针常量,它存放的是一维数组第一个元素的地址,它的值不能被改变,
一维数组名指向的是数组的第一个元素的地址。(获取)修改一个数组,就是要把数组的第一个元素的地址和数组的长度传递进去就行了。
#include <stdio.h> void Show_Array(int *p, int len) { p[0] = -1; int i; for(i = 0; i < len; i++) { p[i] = p[i] + 1; printf("%d\n", p[i]); } } int main(void) { int a[5] = {1, 2, 3, 4, 5}; Show_Array(a, 5); // a等价于&a[0], &a[0]本身就是int *类型 return 0; }
通过函数修改实参的值:
#include <stdio.h> void f(int *p) { *p = 99; } int main(void) { int i = 10; f(&i); printf("%d\n", i); return 0; }
结构体使用概述: 结构体只有属性,没有方法。结构体是类的一个过渡。 为什么会出现结构体? 为了表示一些复杂的数据,而普通的基本类型无法满足要求。 什么叫结构体? 结构体是用户根据实际需要自己定义的复合数据类型。
#include <stdio.h> #include <string.h> struct Student // 定义了一个新的数据类型 { int sid; char name[200]; int sage; }; // 分号不能省 int main(void) { // 定义一个数据类型是struct Student的变量st struct Student st = {1000, "zhangsan", 20}; printf("%d %s %d\n", st.sid, st.name, st.sage); st.sid = 99; strcpy(st.name, "lisi"); st.sage = 22; printf("%d %s %d\n", st.sid, st.name, st.sage); return 0; }
未完待续......
时间: 2024-11-03 03:46:37