1一级字符串容易出错笔记
#include<stdio.h>
#include<stdlib.h>
#include <string.h>
#include <ctype.h>
int main()
{
char buff[1024] = {0};
//不是buff[0] = 0;而是定义为buff[0] - buff[1024] ='\0';
printf("%c\n",buff[0]);
char *p = {0};
//不是*p = ‘0’;
//而是等于p = NULL;
printf("%d",p);
p =NULL;
}
2.字符转越界
char buff[3] = “abc”;
错误,因为这是个字符串,编译器会自动补’\0’;应该为4.
3.
*p++,后缀优先级更高,但是后缀++先返回值,即指针p先于*p结合之后,指针p再++,因此先输出指针p在自增前对应的值,指针p自增 和*(p++)相同。
4.
(*p)++括号优先级高,因此先运行*p的值,然后值再++;
5.
*++p和*(++p)一样,最左边是*,但后面跟的是表达式++p,所以要先算++p。
6.
++*p即++(*p),最左是++但后面跟的是表达式*p所以要先算*p
2.const修饰符学习
const int a;
int const b;
//这俩一样,代表整形变量a,b不能被修改;
const int *c;
//c是指向常整型数的指针(所指向内存的内存数据不能被修改,但本身可以修改)
int *const d;
//d常指针(指针变量不能被修改,但是它所指向的内存空间可以被修改)
const int *const e;
//一个指向常整形的常指针(指针和它所指向的内存空间都都不能被修改)