c/c++纠错

###########################################
c语言关于函数传指针的问题
下面是编译通过执行正确无内存泄漏的程序
int * k(int **s){ // 假如 传参 *s 一级指针, 后面用 s=x;给s赋值,s打印出的地址不一致
	int *x = malloc(8*sizeof(int));
	for(int i=0;i<8;i++){
			x[i] = i;
	}
	*s = x;
	for(int i=0;i<8;i++){printf("%d -> %p\t ",x[i],x+i);}
	printf("\n");
	return x;// 但是 采用 *s 一级指针传参,直接返回 x指针的值,调用的函数用 *s接受,这是没有问题的
}
int main(int argc,char *argv[]){
	int *s;
	s = k(&s);
	for(int i=0;i<8;i++)printf("%d -> %p\n",s[i],s+i);
	free(s);
	return 0;
}
###########################################
纠错:某些教程说 int const  或者 const int 修饰限定指针 代表指针指向的内存只读,
实际情况是这两者方式都是一样限制不了指向的变量,指针定义只有 int * const ptr = &variable;才能限定指针不可指向其他变量
但实际使用应该非常少,指针更多情况扮演变量的角色而不是常量的角色,常常需要将指针指向其它变量,常量指针存在意义不大,因此用得少
		int  a = 10;
		int b = 1<<10;
		const int  *pa = &a;
		//int const *pa=&a; // Compiler accepted it too.
		a = 20;
		pa = &b;
		printf("a:%d *pa:%d pa:%p\n",a,*pa,*pa);
		int * const pc = &b;
		//pc = &a; //Caused error:   assignment of read-only variable 'pc'`
		printf("b:%d *pc:%d pc:%p\n",b,*pc,*pc);
		int const * const px = &b;
		b = 1<<8;
		printf("b:%d *px:%d px:%p\n",b,*px,*px);
###########################################