c语言入门-代码
来源:互联网 发布:素描入门书籍推荐 知乎 编辑:程序博客网 时间:2024/06/09 20:29
最近学习了C语言相关的东西,在这里记录下.
指针变量: (代表某个变量在内存中的地址)
int *p;
float *p;
怎么取一个变量的地址,使用取地址运算符 &:
//describe pointer
inta =11, *pa= &a;
floatb =12, *pb= &b;
printf("%d,%d,%f,%f\n", a, *pa, b, *pb);
printf("%d\n",pb);
这里pb是地址, *pb是变量内容
~~~~~~~~~~~~~~~~~~~
内存分配:
char *p = NULL;
p = (char *)malloc(1);
if (p == NULL) {
//can't malloc
}
free(p);
~~~~~~~~~~
数组的指针:
int a[] = {1,2,3},*p;
p = a;
p =&a[0]; //这两种方式是等价的 这是因为数组名本身就是一个常量指针 所以不需要用取地址符号&
// 也就是说 这里 p+1 a+1 &a[1] 都是取的数组 第一个元素的地址
// 那么取元素就是: printf("arrayspointer %d, %d,%d \n", *(arr + 1), *(p+1),*(&arr[1] ));
//array's pointer
intarr[] ={ 1,2, 3,4 };
int *p = arr, *p2 = &arr[0];// they are the same
for (int i = 0; i <sizeof(arr)/4; i++) {
printf("val=%d,loc=%d,p2val=%d\n", *p, p,*p2);
p++;
p2++;
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~
二维数组的指针
int a[2][3],
int(*p)[3] =a; *(p+1) -> a[1] a[1][1]的地址 : *(p+1) + 1 ,内容就是 *(*(p+1) + 1)
~~~~~~~~~
数组的指针:
charchs5[] = "mydream", *pc =chs5;
printf("%s,%c",pc, *(pc + 1));
==========
指针数组
char*p[4] -> 4个指向字符串的指针
char**pp =NULL;
char*NUMS[3]= {
"123","4567", "78910"
};
for(int i= 0;i <3; i++){
pp = NUMS +i;
printf("%s\n",*pp);
}
函数声明:
int max(int a, intb);
int main () {xxxx}
int max(int a, intb) {
//...
}
// 使用指针做参数替换
结构体:
struct Datedate1, date2;
date1.d = 1;
date1.m = 12;
date1.y = 2001;
struct Date *psDate = &date1;
printf("year=%d,year=%d\n", psDate->y, (*psDate).y);
源码:
# include <stdio.h># include <stdlib.h>// functionint max(int a, int b);void swap(int *p1, int *p2);enum Week {MON =1, TUE, FRI, SAT, SUN};struct Date {int y, m, d;};struct Song {char title[64];int li;struct Date published;};int main() {printf("hello");//getchar();int i = 0;int sum = 0;while (i < 100) {sum += i;i++;}printf("%d\n", sum);for (int i = 1; i <= 9; i++) {for (int j = 1; j <= i; j++) {printf("%d*%d=%d ", i, j , i*j);}printf("\n");}printf("\n");char chs[] = { 'a', 'b', 'c' };char chs2[] = "abc";printf("%d,%d\n", sizeof(chs), sizeof(chs2));// describe pointerint a = 11, *pa = &a;float b = 12, *pb = &b;printf("%d,%d,%f,%f\n", a, *pa, b, *pb);printf("%d\n", pb);// memory mgmtchar *pchar = NULL;pchar = (char *)malloc(1);if (pchar == NULL) {return -1;}*pchar = 'a';printf("\nchar is %c\n", *pchar);free(pchar);// array's pointerint arr[] = { 1, 2, 3, 4 };int *p = arr, *p2 = &arr[0]; // they are the samefor (int i = 0; i < sizeof(arr)/4; i++) {printf("val=%d,loc=%d,p2val=%d\n", *p, p, *p2);p++;p2++;}p = arr;printf("arrays pointer %d, %d,%d \n", *(arr + 1), *(p+1), *(&arr[1] ));// string's pointerchar chs5[] = "mydream", *pc = chs5;printf("%s,%c\n", pc, *(pc + 1));// pointer's pointerchar **pp = NULL;char *NUMS[3] = {"123", "4567", "78910"};for (int i = 0; i < 3; i++) {pp = NUMS + i;printf("%s\n", *pp);}printf("maxis:%d\n", max(2, 3));// use pointer to swapint *px1 = new int(12), *px2 = new int(13);printf("beforeswap=%d,%d\n", *px1, *px2);swap(px1, px2);printf("afterswap=%d,%d\n", *px1, *px2);int *paaa = px1, *pbbb = px2;printf("Aother test way beforeswap=%d,%d\n", *paaa, *pbbb);swap(paaa, pbbb);printf("afterswap=%d,%d\n", *paaa, *pbbb);int aaaa = 12, bbbb = 13, *paaa1 = &aaaa, *pbbb1 = &bbbb;printf("Aother way beforeswap=%d,%d\n", *paaa1, *pbbb1);swap(paaa1, pbbb1);printf("afterswap=%d,%d\n", *paaa1, *pbbb1);// structstruct Date date1, date2;date1.d = 1;date1.m = 12;date1.y = 2001;struct Date *psDate = &date1;printf("year=%d, year=%d\n", psDate->y, (*psDate).y);getchar();}void swap(int *p1, int *p2) {printf("p1=%d,*p1=%d,p2=%d,*p2=%d\n", p1, *p1, p2, *p2);int t = *p1;printf("temp=%d, whereis t = %d\n", t, &t);*p1 = *p2;*p2 = t;printf("p1=%d,*p1=%d,p2=%d,*p2=%d\n", p1, *p1, p2, *p2);}int max(int a, int b) {return a > b ? a : b;}
- c语言入门-代码
- c语言入门代码
- C语言学习入门(视频+代码)
- C语言入门级练习(敲代码)
- C语言入门-指针入门
- c语言入门
- C语言入门手册
- C语言入门
- C语言的入门
- C 语言入门指导
- C语言入门必做题
- C语言入门1
- c语言入门视频教程
- C语言入门
- C语言堆栈入门
- c语言学习入门
- C语言入门基础
- c语言入门
- OpenCV 一个窗口显示多个图片
- opencv+vs2015配置 出现msvcp120.dll
- 文件夹操作
- 大模拟
- C#在winform中调用系统控制台输出
- c语言入门-代码
- windows下用visual studio code 调试go代码有用的文章
- html5 study 1
- 聚簇索引和非聚簇索引以及二级索引
- 输出序列的约瑟夫环
- Python 获取当前系统时间及time模块学习笔记
- MyEclipse 8.6VSS1.6.2 插件安装
- 幻方
- 1147 爱国了一回