1>段错误
传递的是str字符指针的副本,给副本分配了内存,函数结束后未能给str分配内存。
2>不会是NULL,但不一定是HelloWorld
会报警告:返回局部变量的地址
局部变量在函数结果后释放空间,返回的为非法地址
str指向该非法地址,str会输出东西,但不一定是局部变量的内容,有可能会被其他程序占用部分地址
用函数返回值来传递动态内存
3>hello world
传递的是字符指针的地址,可以对传指针的地址副本对值进行改变可以改变原指针的值
4>world
此时str为野指针,随机指向一个地址,不为空。
5>
int a int *a int **a int a[10]
int *a[10] int (*a)[10] int (*a)(int) int(*a[10])(int)
(要认识,也要能说)
6> 6 1 4
7> 101
8> 100 2
9> b
10> a
11> a
画栈图
12> c
&a+1:偏移整个数组的大小 *(ptr-1) -->a[4]
13> b
++b --> b+1 :首地址偏移一行:b[0][0] --> b[1][0]
所以a[2][1]在该函数中为b[1][1]
14> c
逗号表达式以最后一个运算为主
逗号运算符优先级低与等号运算符
括号内的运算符比括号外的运算级高
15> b a
ptr指向第一行第一个元素的首地址:(*ptr)[1] -->(*ptr+0)[1] -->p[0][1]
(*ptr)[1] 第一行第二个元素
++ptr;
指向下一行
16> a c
17> c
i++++和++++i是错误的写法:C语言中,i++和++i是右值,不能再++
18> a
19> a
画栈图
20> c