這段代碼看起來像這樣,因為在賦值中禁止使用結構體和全域變數。
它以任何一種方式作業,但我想知道是否只使用雙指標會重新分配指標的臨時副本。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void allocateData(char ***dptrArrayData, int *intArraySize)
{
*dptrArrayData = (char**)malloc(*intArraySize*sizeof(char*));
for (int i = 0; i < *intArraySize; i )
{
(*dptrArrayData)[i] = (char*)malloc(12*sizeof(char));
(*dptrArrayData)[i] = "Lorem Ipsum";
}
}
void printDataDoublePointer(char **dptrArrayData, int intArraySize)
{
for (int i = 0; i < intArraySize; i )
{
printf("Text:%s at index:%d\n",dptrArrayData[i],i);
}
}
void printDataTriplePointer(char ***dptrArrayData, int *intArraySize)
{
for (int i = 0; i < *intArraySize; i )
{
printf("Text:%s at index:%d\n",(*dptrArrayData)[i],i);
}
}
int main()
{
char **dptrArrayData;
int intArraySize = 5;
allocateData(&dptrArrayData,&intArraySize);
printDataDoublePointer(dptrArrayData,intArraySize);
printDataTriplePointer(&dptrArrayData,&intArraySize);
return 0;
}
uj5u.com熱心網友回復:
它以任何一種方式作業,但我想知道是否只使用雙指標會重新分配指標的臨時副本。
我帶你去問兩者的區別
void printDataDoublePointer(char **dptrArrayData, int intArraySize)
和
void printDataTriplePointer(char ***dptrArrayData, int *intArraySize)
. 在每種情況下,函式都會接收呼叫者提供的所有引數值的副本。這是按值傳遞語意的本質,它是 C 提供的唯一函式呼叫語意。
但不涉及重新分配。當指標作為函式引數傳遞時,只會復制指標,而不是它指向的物件。該函式接收指向原始指向的同一物件的獨立指標。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/344543.html
上一篇:Nginx內網單機反向代理
