2016-06-14 55 views
-2
int* asciiCode(char c1, char c2){ 
    static int asciiCode[126]; 
    /code/ 
    /code/ 
    return asciiCode; 
} 

对于这种情况,我可以使用分配而不是静态int吗?我不知道上面的指针数组元素的数目是多少?如果是的话,我该怎么做?如何使用动态分配而不是静态int?

+0

'我可以可以使用allocation'..what分配?动态?为什么? –

+3

_请澄清您的具体问题或添加额外的细节,以确切地突出你所需要的。正如目前所写,很难确切地说出你在问什么。请参阅如何寻求问题页面以获得澄清此问题的帮助._ –

+0

是的,动态分配,对此感到抱歉 –

回答

0

对于这种情况,我可以使用分配而不是静态int吗?

是的,只要一些例程也free()分配的内存。

我不知道上面的指针数组元素的数量吗?

代码中没有指针数组。如果你指的是int阵列,项目的金额似乎是126.这似乎很奇怪,老7位ASCII有128个符号,而不是126

如果是的话,我该怎么办呢?

随着malloc然后返回一个指针。

+0

我认为标准的7位ASCII有128个符号[ASCII](https://simple.wikipedia.org/wiki/ASCII) – sg7

+0

@ sg7嗯实际上,0也可能是一个符号。我会编辑,谢谢。 – Lundin

0

这是一个您可能会觉得有用的例子。 array被分配,并在随后的调用中使用,以模拟使用静态数组来保存调用之间的值。

#include <stdio.h> 
#include <stdlib.h> 

int* asciiCode(char c1, char c2, int *asciiCodeArr, int size){ 
    int static counter = 0; 

    if(asciiCodeArr==NULL) 
    { 
    asciiCodeArr = (int *) malloc(sizeof(int)* size); 
    if(!asciiCodeArr) return NULL; 
    } 

    printf("c1=%c ",c1); 
    printf("c2=%c ",c2); 

    asciiCodeArr[counter] = c1; 
    counter = counter + 1; 

    asciiCodeArr[counter] = c2; 
    counter = counter + 1; 

    return (asciiCodeArr); 
} 

int main(void) { 
    int i; 
    int *array=NULL; 
    int size = 128; // To Hold 128 - 7bits Standard ASCII characters 

    array = asciiCode('1', '2', array, size); 
    if(!array){ 
     printf("allocation error!\n"); 
     return -1; 
    } 

    // array = 
    asciiCode('3', '4', array, size); 

    printf("\narray content in hex: ");  
    for(i=0;i<4;i++) 
    { 
     printf("%X ", array[i]); 
    } 

    free(array); 
    return 0; 
} 

输出:

c1=1 c2=2 c1=3 c2=4 
array content in hex: 31 32 33 34 
相关问题