Your assessment is correct: the problems are pointer-related.
(corrections in bold)
int asc, asci = 0;
ptr = &asc;
printf("Enter a string : ");
for(ptr = str; *ptr != '\0'; ptr++)
asci = asci + *ptr;
printf("The total number is %d\n", asci);
str needs to have memory allocated to it. Either change it to an array as I have here, or malloc some dynamic memory to it before you try to use it. Otherwise, you would get a segmentation fault.
Since ptr will point to characters in a char array, it seemed more fitting to change the data type of ptr. In arithmetic operations, a char is treated as a numeric value anyway, ie as its ASCII value.
, asci = 0;
ptr = &asc;
The variable, asc, is not used.
scanf requires a pointer to the variable that will receive the scanned value. But str is already a pointer (array names are equivalent to pointers.
for(ptr = str
; *ptr != '\0'
For ptr to scan through the string in str, it needs to be initialized to pointing to the beginning of str (or wherever you want to start within str).
ptr contains the address of a value, not the value itself, so to get to that value you need to dereference the pointer. Besides, if ptr had the value of '\0', then it would be NULL and attempts to use it would result in a segmentation fault.
asci = asci + *ptr
Again, you want to use the value that ptr points to, not the value of ptr itself, so you need to dereference it.
An alternative and very C-ish way to write that would be:
asci += *ptr;