C
使用按值传递进行函数参数传递。您可以更改地址处的值被指出app
[i.e., ppa
, in alloco()
] from alloco()
但不能改变的值app
。换句话说,ppa
是函数局部的alloco()
。改变值ppa
不会影响(反映)app
存在于main()
.
如果你想改变的值app
本身来自alloco()
,你需要通过一个指向 app (指针到指针).
除了这个问题之外,在您的代码中
ppa = (int *)malloc(20);
是错的。你想要的其实是
ppa = malloc(20 * sizeof (int)); //argument is in bytes, not in `int` or any elements
或更好,
ppa = malloc(20 * sizeof * ppa); //data type integrity
另外,值得一提的是,请不投 https://stackoverflow.com/q/605845/2173917返回值malloc()
和家人在C
.
还有一件事,在打印时pointer, use %p
打印时的格式说明符size_t
, use %zu
, like
printf("inside alloco %p\n",ppa);
and
printf("size of a %zu\n", sizeof(ppa)); //sizeof returns size_t